Compare commits
No commits in common. "c8" and "a8-beta-deprecated" have entirely different histories.
c8
...
a8-beta-de
@ -1,8 +1,7 @@
|
|||||||
bc4adac8f38f5103d8f88564a1545063dd8d6402 SOURCES/cbindgen-vendor.tar.xz
|
52f2d51d0e17d137571bf3a766f514d34e28e556 SOURCES/cbindgen-vendor.tar.xz
|
||||||
f87e9828496d77af5e879cfd4b493973e3fa2ca5 SOURCES/firefox-140.6.0esr.processed-source.tar.xz
|
ce1edd4069705fafcf232716c62e58e5cd2928d9 SOURCES/firefox-102.8.0esr.b2.processed-source.tar.xz
|
||||||
2c0416681b196b1bf85720e01a30fcea6fbcb19f SOURCES/firefox-langpacks-140.6.0esr-20251202.tar.xz
|
ede840118e4d2795a9dce2267b1dedbbc4015c7a SOURCES/firefox-langpacks-102.8.0esr-20230214.tar.xz
|
||||||
2d8a6b2b30d5496735f49ffe8c8a7ede3a78a5ca SOURCES/mochitest-python.tar.gz
|
2dbf669fa4742e7065cc54cec19f96423032658b SOURCES/firefox-symbolic.svg
|
||||||
0d0ddbd2a73340b3cbc977997f57222946b1e775 SOURCES/nspr-4.36.0-2.el8_2.src.rpm
|
da39a3ee5e6b4b0d3255bfef95601890afd80709 SOURCES/mochitest-python.tar.gz
|
||||||
fd3879b176634d66f8ef64d18fdaeec98e140c23 SOURCES/nss-3.112.0-1.el9_4.src.rpm
|
af58b3c87a8b5491dde63b07efaeb3d7f1ec56c1 SOURCES/nspr-4.34.0-3.el8_1.src.rpm
|
||||||
c3f0aaef37972107442e2796efad71be3a98ce3c SOURCES/nss-3.112.0-4.el8_2.src.rpm
|
fc5297c6830f0a1e88f84b94b0b066487664061b SOURCES/nss-3.79.0-6.el8_1.src.rpm
|
||||||
0332862626d2148648ff749078c223dbd859d901 SOURCES/wasi-sdk-20.tar.gz
|
|
||||||
|
|||||||
11
.gitignore
vendored
11
.gitignore
vendored
@ -1,8 +1,7 @@
|
|||||||
SOURCES/cbindgen-vendor.tar.xz
|
SOURCES/cbindgen-vendor.tar.xz
|
||||||
SOURCES/firefox-140.6.0esr.processed-source.tar.xz
|
SOURCES/firefox-102.8.0esr.b2.processed-source.tar.xz
|
||||||
SOURCES/firefox-langpacks-140.6.0esr-20251202.tar.xz
|
SOURCES/firefox-langpacks-102.8.0esr-20230214.tar.xz
|
||||||
|
SOURCES/firefox-symbolic.svg
|
||||||
SOURCES/mochitest-python.tar.gz
|
SOURCES/mochitest-python.tar.gz
|
||||||
SOURCES/nspr-4.36.0-2.el8_2.src.rpm
|
SOURCES/nspr-4.34.0-3.el8_1.src.rpm
|
||||||
SOURCES/nss-3.112.0-1.el9_4.src.rpm
|
SOURCES/nss-3.79.0-6.el8_1.src.rpm
|
||||||
SOURCES/nss-3.112.0-4.el8_2.src.rpm
|
|
||||||
SOURCES/wasi-sdk-20.tar.gz
|
|
||||||
|
|||||||
44
SOURCES/0001-GLIBCXX-fix-for-GCC-12.patch
Normal file
44
SOURCES/0001-GLIBCXX-fix-for-GCC-12.patch
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
From efd5bc0715e5477318be95a76811cda0a89e8289 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= <emilio@crisal.io>
|
||||||
|
Date: Fri, 4 Mar 2022 12:00:26 +0100
|
||||||
|
Subject: [PATCH] GLIBCXX fix for GCC 12?
|
||||||
|
|
||||||
|
---
|
||||||
|
build/unix/stdc++compat/stdc++compat.cpp | 14 ++++++++++++++
|
||||||
|
1 file changed, 14 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/build/unix/stdc++compat/stdc++compat.cpp b/build/unix/stdc++compat/stdc++compat.cpp
|
||||||
|
index 0180f6bcfa998..8d7a542ff11f0 100644
|
||||||
|
--- a/build/unix/stdc++compat/stdc++compat.cpp
|
||||||
|
+++ b/build/unix/stdc++compat/stdc++compat.cpp
|
||||||
|
@@ -24,6 +24,7 @@
|
||||||
|
GLIBCXX_3.4.27 is from gcc 10
|
||||||
|
GLIBCXX_3.4.28 is from gcc 10
|
||||||
|
GLIBCXX_3.4.29 is from gcc 11
|
||||||
|
+ GLIBCXX_3.4.30 is from gcc 12
|
||||||
|
|
||||||
|
This file adds the necessary compatibility tricks to avoid symbols with
|
||||||
|
version GLIBCXX_3.4.20 and bigger, keeping binary compatibility with
|
||||||
|
@@ -69,6 +70,19 @@ void __attribute__((weak)) __throw_bad_array_new_length() { MOZ_CRASH(); }
|
||||||
|
} // namespace std
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#if _GLIBCXX_RELEASE >= 12
|
||||||
|
+namespace std {
|
||||||
|
+
|
||||||
|
+/* This avoids the GLIBCXX_3.4.30 symbol version. */
|
||||||
|
+void __attribute__((weak))
|
||||||
|
+__glibcxx_assert_fail(const char* __file, int __line, const char* __function,
|
||||||
|
+ const char* __condition) {
|
||||||
|
+ MOZ_CRASH();
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+} // namespace std
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
/* While we generally don't build with exceptions, we have some host tools
|
||||||
|
* that do use them. libstdc++ from GCC 5.0 added exception constructors with
|
||||||
|
* char const* argument. Older versions only have a constructor with
|
||||||
|
--
|
||||||
|
2.35.1
|
||||||
|
|
||||||
82
SOURCES/D110204-fscreen.diff
Normal file
82
SOURCES/D110204-fscreen.diff
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
diff -up firefox-102.2.0/widget/gtk/nsWindow.cpp.D110204-fscreen.diff firefox-102.2.0/widget/gtk/nsWindow.cpp
|
||||||
|
--- firefox-102.2.0/widget/gtk/nsWindow.cpp.D110204-fscreen.diff 2022-08-18 21:54:09.000000000 +0200
|
||||||
|
+++ firefox-102.2.0/widget/gtk/nsWindow.cpp 2022-09-02 15:55:18.023843940 +0200
|
||||||
|
@@ -96,6 +96,7 @@
|
||||||
|
#include "ScreenHelperGTK.h"
|
||||||
|
#include "SystemTimeConverter.h"
|
||||||
|
#include "WidgetUtilsGtk.h"
|
||||||
|
+#include "nsIBrowserHandler.h"
|
||||||
|
|
||||||
|
#ifdef ACCESSIBILITY
|
||||||
|
# include "mozilla/a11y/LocalAccessible.h"
|
||||||
|
@@ -169,7 +170,8 @@ const gint kEvents = GDK_TOUCHPAD_GESTUR
|
||||||
|
GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK |
|
||||||
|
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
|
||||||
|
GDK_SMOOTH_SCROLL_MASK | GDK_TOUCH_MASK | GDK_SCROLL_MASK |
|
||||||
|
- GDK_POINTER_MOTION_MASK | GDK_PROPERTY_CHANGE_MASK;
|
||||||
|
+ GDK_POINTER_MOTION_MASK | GDK_PROPERTY_CHANGE_MASK |
|
||||||
|
+ GDK_FOCUS_CHANGE_MASK;
|
||||||
|
|
||||||
|
/* utility functions */
|
||||||
|
static bool is_mouse_in_window(GdkWindow* aWindow, gdouble aMouseX,
|
||||||
|
@@ -408,7 +410,8 @@ nsWindow::nsWindow()
|
||||||
|
mMovedAfterMoveToRect(false),
|
||||||
|
mResizedAfterMoveToRect(false),
|
||||||
|
mConfiguredClearColor(false),
|
||||||
|
- mGotNonBlankPaint(false) {
|
||||||
|
+ mGotNonBlankPaint(false),
|
||||||
|
+ mPendingFullscreen(false) {
|
||||||
|
mWindowType = eWindowType_child;
|
||||||
|
mSizeConstraints.mMaxSize = GetSafeWindowSize(mSizeConstraints.mMaxSize);
|
||||||
|
|
||||||
|
@@ -4814,6 +4817,19 @@ void nsWindow::OnWindowStateEvent(GtkWid
|
||||||
|
ClearTransparencyBitmap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ // Hack to ensure window switched to fullscreen - avoid to fail when starting
|
||||||
|
+ // in kiosk mode
|
||||||
|
+ if (mPendingFullscreen &&
|
||||||
|
+ !(aEvent->new_window_state & GDK_WINDOW_STATE_FULLSCREEN)) {
|
||||||
|
+ LOG(
|
||||||
|
+ " Window should be fullscreen, but it's not, retrying set to "
|
||||||
|
+ "fullscreen.\n");
|
||||||
|
+ MakeFullScreen(true);
|
||||||
|
+ } else {
|
||||||
|
+ LOG(" Window successfully switched to fullscreen, happy now\n");
|
||||||
|
+ mPendingFullscreen = false;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
void nsWindow::OnDPIChanged() {
|
||||||
|
@@ -7042,6 +7058,19 @@ nsresult nsWindow::MakeFullScreen(bool a
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // if in kiosk, ensure the fullscreen is called
|
||||||
|
+ nsCOMPtr<nsIBrowserHandler> browserHandler =
|
||||||
|
+ do_GetService("@mozilla.org/browser/clh;1");
|
||||||
|
+ if (browserHandler) {
|
||||||
|
+ bool isKiosk;
|
||||||
|
+ browserHandler->GetKiosk(&isKiosk);
|
||||||
|
+ if (isKiosk) {
|
||||||
|
+ LOG(" is kiosk, ensure the window switch to fullscreen\n");
|
||||||
|
+ mPendingFullscreen = true;
|
||||||
|
+ }
|
||||||
|
+ } else {
|
||||||
|
+ LOG(" Cannot find the browserHandler service.\n");
|
||||||
|
+ }
|
||||||
|
gtk_window_fullscreen(GTK_WINDOW(mShell));
|
||||||
|
} else {
|
||||||
|
mSizeMode = mLastSizeMode;
|
||||||
|
diff -up firefox-102.2.0/widget/gtk/nsWindow.h.D110204-fscreen.diff firefox-102.2.0/widget/gtk/nsWindow.h
|
||||||
|
--- firefox-102.2.0/widget/gtk/nsWindow.h.D110204-fscreen.diff 2022-08-18 21:53:52.000000000 +0200
|
||||||
|
+++ firefox-102.2.0/widget/gtk/nsWindow.h 2022-09-02 08:17:07.606010905 +0200
|
||||||
|
@@ -712,6 +712,7 @@ class nsWindow final : public nsBaseWidg
|
||||||
|
* move-to-rect callback we set mMovedAfterMoveToRect/mResizedAfterMoveToRect.
|
||||||
|
*/
|
||||||
|
bool mWaitingForMoveToRectCallback : 1;
|
||||||
|
+ bool mPendingFullscreen : 1;
|
||||||
|
bool mMovedAfterMoveToRect : 1;
|
||||||
|
bool mResizedAfterMoveToRect : 1;
|
||||||
|
|
||||||
25
SOURCES/D158770.diff
Normal file
25
SOURCES/D158770.diff
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
diff --git a/parser/expat/lib/xmlparse.c b/parser/expat/lib/xmlparse.c
|
||||||
|
--- a/parser/expat/lib/xmlparse.c
|
||||||
|
+++ b/parser/expat/lib/xmlparse.c
|
||||||
|
@@ -5652,12 +5652,18 @@
|
||||||
|
else
|
||||||
|
#endif /* XML_DTD */
|
||||||
|
{
|
||||||
|
processor = contentProcessor;
|
||||||
|
/* see externalEntityContentProcessor vs contentProcessor */
|
||||||
|
- return doContent(parser, parentParser ? 1 : 0, encoding, s, end,
|
||||||
|
- nextPtr, (XML_Bool)!ps_finalBuffer);
|
||||||
|
+ result = doContent(parser, parser->m_parentParser ? 1 : 0,
|
||||||
|
+ parser->m_encoding, s, end, nextPtr,
|
||||||
|
+ (XML_Bool)! parser->m_parsingStatus.finalBuffer);
|
||||||
|
+ if (result == XML_ERROR_NONE) {
|
||||||
|
+ if (! storeRawNames(parser))
|
||||||
|
+ return XML_ERROR_NO_MEMORY;
|
||||||
|
+ }
|
||||||
|
+ return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static enum XML_Error PTRCALL
|
||||||
|
errorProcessor(XML_Parser parser,
|
||||||
|
|
||||||
@ -1,50 +0,0 @@
|
|||||||
diff --git a/dom/media/webrtc/transport/nricectx.cpp b/dom/media/webrtc/transport/nricectx.cpp
|
|
||||||
--- a/dom/media/webrtc/transport/nricectx.cpp
|
|
||||||
+++ b/dom/media/webrtc/transport/nricectx.cpp
|
|
||||||
@@ -124,23 +124,30 @@
|
|
||||||
static int nr_crypto_nss_hmac(UCHAR* key, size_t keyl, UCHAR* buf, size_t bufl,
|
|
||||||
UCHAR* result) {
|
|
||||||
CK_MECHANISM_TYPE mech = CKM_SHA_1_HMAC;
|
|
||||||
PK11SlotInfo* slot = nullptr;
|
|
||||||
MOZ_ASSERT(keyl > 0);
|
|
||||||
- SECItem keyi = {siBuffer, key, static_cast<unsigned int>(keyl)};
|
|
||||||
+ CK_KEY_DERIVATION_STRING_DATA idkey = {key, keyl};
|
|
||||||
+ SECItem keyi = {siBuffer, (unsigned char*)&idkey, sizeof(idkey)};
|
|
||||||
+ PK11SymKey* tmpKey = nullptr;
|
|
||||||
PK11SymKey* skey = nullptr;
|
|
||||||
PK11Context* hmac_ctx = nullptr;
|
|
||||||
SECStatus status;
|
|
||||||
unsigned int hmac_len;
|
|
||||||
SECItem param = {siBuffer, nullptr, 0};
|
|
||||||
int err = R_INTERNAL;
|
|
||||||
|
|
||||||
slot = PK11_GetInternalKeySlot();
|
|
||||||
if (!slot) goto abort;
|
|
||||||
|
|
||||||
- skey = PK11_ImportSymKey(slot, mech, PK11_OriginUnwrap, CKA_SIGN, &keyi,
|
|
||||||
- nullptr);
|
|
||||||
+ // HMAC is used for hash calculation only so use derive instead of import
|
|
||||||
+ // to be FIPS compliant.
|
|
||||||
+ tmpKey = PK11_KeyGen(slot, mech, NULL, keyl, nullptr);
|
|
||||||
+ if (!tmpKey) goto abort;
|
|
||||||
+
|
|
||||||
+ skey = PK11_Derive(tmpKey, CKM_CONCATENATE_DATA_AND_BASE, &keyi, mech,
|
|
||||||
+ CKA_SIGN, keyl);
|
|
||||||
if (!skey) goto abort;
|
|
||||||
|
|
||||||
hmac_ctx = PK11_CreateContextBySymKey(mech, CKA_SIGN, skey, ¶m);
|
|
||||||
if (!hmac_ctx) goto abort;
|
|
||||||
|
|
||||||
@@ -157,10 +164,11 @@
|
|
||||||
|
|
||||||
err = 0;
|
|
||||||
|
|
||||||
abort:
|
|
||||||
if (hmac_ctx) PK11_DestroyContext(hmac_ctx, PR_TRUE);
|
|
||||||
+ if (tmpKey) PK11_FreeSymKey(tmpKey);
|
|
||||||
if (skey) PK11_FreeSymKey(skey);
|
|
||||||
if (slot) PK11_FreeSlot(slot);
|
|
||||||
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,206 +0,0 @@
|
|||||||
diff -up firefox-140.0/third_party/libsrtp/src/crypto/cipher/aes_gcm_nss.c.D224588 firefox-140.0/third_party/libsrtp/src/crypto/cipher/aes_gcm_nss.c
|
|
||||||
--- firefox-140.0/third_party/libsrtp/src/crypto/cipher/aes_gcm_nss.c.D224588 2025-06-25 11:50:45.852066851 +0200
|
|
||||||
+++ firefox-140.0/third_party/libsrtp/src/crypto/cipher/aes_gcm_nss.c 2025-06-25 11:50:45.908794290 +0200
|
|
||||||
@@ -56,6 +56,7 @@
|
|
||||||
#include "cipher_test_cases.h"
|
|
||||||
#include <secerr.h>
|
|
||||||
#include <nspr.h>
|
|
||||||
+#include "nss_fips.h"
|
|
||||||
|
|
||||||
srtp_debug_module_t srtp_mod_aes_gcm = {
|
|
||||||
0, /* debugging is off by default */
|
|
||||||
@@ -215,8 +216,13 @@ static srtp_err_status_t srtp_aes_gcm_ns
|
|
||||||
/* explicitly cast away const of key */
|
|
||||||
SECItem key_item = { siBuffer, (unsigned char *)(uintptr_t)key,
|
|
||||||
c->key_size };
|
|
||||||
- c->key = PK11_ImportSymKey(slot, CKM_AES_GCM, PK11_OriginUnwrap,
|
|
||||||
- CKA_ENCRYPT, &key_item, NULL);
|
|
||||||
+ if (PK11_IsFIPS()) {
|
|
||||||
+ c->key = PK11_ImportSymKey_FIPS(slot, CKM_AES_GCM, PK11_OriginUnwrap,
|
|
||||||
+ CKA_ENCRYPT, &key_item, NULL);
|
|
||||||
+ } else {
|
|
||||||
+ c->key = PK11_ImportSymKey(slot, CKM_AES_GCM, PK11_OriginUnwrap,
|
|
||||||
+ CKA_ENCRYPT, &key_item, NULL);
|
|
||||||
+ }
|
|
||||||
PK11_FreeSlot(slot);
|
|
||||||
|
|
||||||
if (!c->key) {
|
|
||||||
diff -up firefox-140.0/third_party/libsrtp/src/crypto/cipher/aes_icm_nss.c.D224588 firefox-140.0/third_party/libsrtp/src/crypto/cipher/aes_icm_nss.c
|
|
||||||
--- firefox-140.0/third_party/libsrtp/src/crypto/cipher/aes_icm_nss.c.D224588 2025-06-17 18:15:28.000000000 +0200
|
|
||||||
+++ firefox-140.0/third_party/libsrtp/src/crypto/cipher/aes_icm_nss.c 2025-06-25 11:50:45.909171218 +0200
|
|
||||||
@@ -53,6 +53,7 @@
|
|
||||||
#include "alloc.h"
|
|
||||||
#include "cipher_types.h"
|
|
||||||
#include "cipher_test_cases.h"
|
|
||||||
+#include "nss_fips.h"
|
|
||||||
|
|
||||||
srtp_debug_module_t srtp_mod_aes_icm = {
|
|
||||||
0, /* debugging is off by default */
|
|
||||||
@@ -257,8 +258,13 @@ static srtp_err_status_t srtp_aes_icm_ns
|
|
||||||
/* explicitly cast away const of key */
|
|
||||||
SECItem keyItem = { siBuffer, (unsigned char *)(uintptr_t)key,
|
|
||||||
c->key_size };
|
|
||||||
- c->key = PK11_ImportSymKey(slot, CKM_AES_CTR, PK11_OriginUnwrap,
|
|
||||||
- CKA_ENCRYPT, &keyItem, NULL);
|
|
||||||
+ if (PK11_IsFIPS()) {
|
|
||||||
+ c->key = PK11_ImportSymKey_FIPS(slot, CKM_AES_CTR, PK11_OriginUnwrap,
|
|
||||||
+ CKA_ENCRYPT, &keyItem, NULL);
|
|
||||||
+ } else {
|
|
||||||
+ c->key = PK11_ImportSymKey(slot, CKM_AES_CTR, PK11_OriginUnwrap,
|
|
||||||
+ CKA_ENCRYPT, &keyItem, NULL);
|
|
||||||
+ }
|
|
||||||
PK11_FreeSlot(slot);
|
|
||||||
|
|
||||||
if (!c->key) {
|
|
||||||
diff -up firefox-140.0/third_party/libsrtp/src/crypto/include/nss_fips.h.D224588 firefox-140.0/third_party/libsrtp/src/crypto/include/nss_fips.h
|
|
||||||
--- firefox-140.0/third_party/libsrtp/src/crypto/include/nss_fips.h.D224588 2025-06-25 11:50:45.909524312 +0200
|
|
||||||
+++ firefox-140.0/third_party/libsrtp/src/crypto/include/nss_fips.h 2025-06-25 11:50:45.909524312 +0200
|
|
||||||
@@ -0,0 +1,148 @@
|
|
||||||
+/*
|
|
||||||
+ * Copyright (c) 2024, Red Hat, Inc.
|
|
||||||
+ * All rights reserved.
|
|
||||||
+ *
|
|
||||||
+ * Redistribution and use in source and binary forms, with or without
|
|
||||||
+ * modification, are permitted provided that the following conditions
|
|
||||||
+ * are met:
|
|
||||||
+ *
|
|
||||||
+ * Redistributions of source code must retain the above copyright
|
|
||||||
+ * notice, this list of conditions and the following disclaimer.
|
|
||||||
+ *
|
|
||||||
+ * Redistributions in binary form must reproduce the above
|
|
||||||
+ * copyright notice, this list of conditions and the following
|
|
||||||
+ * disclaimer in the documentation and/or other materials provided
|
|
||||||
+ * with the distribution.
|
|
||||||
+ *
|
|
||||||
+ * Neither the name of the Red Hat, Inc. nor the names of its
|
|
||||||
+ * contributors may be used to endorse or promote products derived
|
|
||||||
+ * from this software without specific prior written permission.
|
|
||||||
+ *
|
|
||||||
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
||||||
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
||||||
+ * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
|
||||||
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
||||||
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
|
||||||
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
+*/
|
|
||||||
+
|
|
||||||
+/*
|
|
||||||
+ Adapted from Red Hat Ceph patch by
|
|
||||||
+ Radoslaw Zarzynski <rzarzyns@redhat.com>
|
|
||||||
+
|
|
||||||
+ PK11_ImportSymKey() is a part of NSS API that becomes unavailable
|
|
||||||
+ in the FIPS mode. Apparently NSS targets stricter restrictions
|
|
||||||
+ than those coming from Level 1 of FIPS 140-2. In the consequence,
|
|
||||||
+ loading a symmetric key from plain keyring or key db fails.
|
|
||||||
+
|
|
||||||
+ A raw crypto key is in-memory wrapped with fresh, random wrapping
|
|
||||||
+ key just before being imported via PK11_UnwrapSymKey(). Of course,
|
|
||||||
+ this effectively lowers to FIPS level 1. Still, this would be no
|
|
||||||
+ different from what OpenSSL gives in the matter.
|
|
||||||
+*/
|
|
||||||
+
|
|
||||||
+#ifndef NSS_FIPS_H
|
|
||||||
+#define NSS_FIPS_H
|
|
||||||
+
|
|
||||||
+static PK11SymKey *PK11_ImportSymKey_FIPS(
|
|
||||||
+ PK11SlotInfo * const slot,
|
|
||||||
+ const CK_MECHANISM_TYPE type,
|
|
||||||
+ const PK11Origin origin,
|
|
||||||
+ const CK_ATTRIBUTE_TYPE operation,
|
|
||||||
+ SECItem * const raw_key,
|
|
||||||
+ void * const wincx)
|
|
||||||
+{
|
|
||||||
+ PK11SymKey* wrapping_key = NULL;
|
|
||||||
+ PK11Context *wrap_key_crypt_context = NULL;
|
|
||||||
+ SECItem *raw_key_aligned = NULL;
|
|
||||||
+ CK_MECHANISM_TYPE wrap_mechanism = 0;
|
|
||||||
+
|
|
||||||
+ struct {
|
|
||||||
+ unsigned char data[256];
|
|
||||||
+ int len;
|
|
||||||
+ } wrapped_key;
|
|
||||||
+
|
|
||||||
+ #define SCOPE_DATA_FREE() \
|
|
||||||
+ { \
|
|
||||||
+ PK11_FreeSymKey(wrapping_key); \
|
|
||||||
+ PK11_DestroyContext(wrap_key_crypt_context, PR_TRUE); \
|
|
||||||
+ SECITEM_FreeItem(raw_key_aligned, PR_TRUE); \
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if(raw_key->len > sizeof(wrapped_key.data)) {
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // getting 306 on my system which is CKM_DES3_ECB.
|
|
||||||
+ wrap_mechanism = PK11_GetBestWrapMechanism(slot);
|
|
||||||
+
|
|
||||||
+ // Generate a wrapping key. It will be used exactly twice over the scope:
|
|
||||||
+ // * to encrypt raw_key giving wrapped_key,
|
|
||||||
+ // * to decrypt wrapped_key in the internals of PK11_UnwrapSymKey().
|
|
||||||
+ wrapping_key = PK11_KeyGen(slot, wrap_mechanism, NULL,
|
|
||||||
+ PK11_GetBestKeyLength(slot, wrap_mechanism), NULL);
|
|
||||||
+ if (wrapping_key == NULL) {
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // Prepare a PK11 context for the raw_key -> wrapped_key encryption.
|
|
||||||
+ SECItem tmp_sec_item;
|
|
||||||
+ memset(&tmp_sec_item, 0, sizeof(tmp_sec_item));
|
|
||||||
+ wrap_key_crypt_context = PK11_CreateContextBySymKey(
|
|
||||||
+ wrap_mechanism,
|
|
||||||
+ CKA_ENCRYPT,
|
|
||||||
+ wrapping_key,
|
|
||||||
+ &tmp_sec_item);
|
|
||||||
+ if (wrap_key_crypt_context == NULL) {
|
|
||||||
+ SCOPE_DATA_FREE();
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // Finally wrap the key. Important note is that the wrapping mechanism
|
|
||||||
+ // selection (read: just grabbing a cipher) offers, at least in my NSS
|
|
||||||
+ // copy, mostly CKM_*_ECB ciphers (with 3DES as the leading one, see
|
|
||||||
+ // wrapMechanismList[] in pk11mech.c). There is no CKM_*_*_PAD variant
|
|
||||||
+ // which means that plaintext we are providing to PK11_CipherOp() must
|
|
||||||
+ // be aligned to cipher's block size. For 3DES it's 64 bits.
|
|
||||||
+ raw_key_aligned = PK11_BlockData(raw_key, PK11_GetBlockSize(wrap_mechanism, NULL));
|
|
||||||
+ if (raw_key_aligned == NULL) {
|
|
||||||
+ SCOPE_DATA_FREE();
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (PK11_CipherOp(wrap_key_crypt_context, wrapped_key.data, &wrapped_key.len,
|
|
||||||
+ sizeof(wrapped_key.data), raw_key_aligned->data,
|
|
||||||
+ raw_key_aligned->len) != SECSuccess) {
|
|
||||||
+ SCOPE_DATA_FREE();
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (PK11_Finalize(wrap_key_crypt_context) != SECSuccess) {
|
|
||||||
+ SCOPE_DATA_FREE();
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // Key is wrapped now so we can acquire the ultimate PK11SymKey through
|
|
||||||
+ // unwrapping it. Of course these two opposite operations form NOP with
|
|
||||||
+ // a side effect: FIPS level 1 compatibility.
|
|
||||||
+ memset(&tmp_sec_item, 0, sizeof(tmp_sec_item));
|
|
||||||
+
|
|
||||||
+ SECItem wrapped_key_item;
|
|
||||||
+ memset(&wrapped_key_item, 0, sizeof(wrapped_key_item));
|
|
||||||
+ wrapped_key_item.data = wrapped_key.data;
|
|
||||||
+ wrapped_key_item.len = wrapped_key.len;
|
|
||||||
+
|
|
||||||
+ PK11SymKey *ret = PK11_UnwrapSymKey(wrapping_key, wrap_mechanism,
|
|
||||||
+ &tmp_sec_item, &wrapped_key_item, type,
|
|
||||||
+ operation, raw_key->len);
|
|
||||||
+ SCOPE_DATA_FREE();
|
|
||||||
+ return ret;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+#endif // NSS_FIPS_H
|
|
||||||
@ -1,16 +0,0 @@
|
|||||||
diff --git a/intl/strres/nsStringBundle.cpp b/intl/strres/nsStringBundle.cpp
|
|
||||||
--- a/intl/strres/nsStringBundle.cpp
|
|
||||||
+++ b/intl/strres/nsStringBundle.cpp
|
|
||||||
@@ -753,10 +753,11 @@
|
|
||||||
const char16_t* aSomeData) {
|
|
||||||
if (strcmp("profile-do-change", aTopic) == 0 ||
|
|
||||||
strcmp("chrome-flush-caches", aTopic) == 0 ||
|
|
||||||
strcmp("intl:app-locales-changed", aTopic) == 0) {
|
|
||||||
flushBundleCache(/* ignoreShared = */ false);
|
|
||||||
+ mBundleMap.Clear();
|
|
||||||
} else if (strcmp("memory-pressure", aTopic) == 0) {
|
|
||||||
flushBundleCache(/* ignoreShared = */ true);
|
|
||||||
}
|
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
|
|
||||||
@ -1,53 +0,0 @@
|
|||||||
diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml
|
|
||||||
--- a/modules/libpref/init/StaticPrefList.yaml
|
|
||||||
+++ b/modules/libpref/init/StaticPrefList.yaml
|
|
||||||
@@ -1762,10 +1762,16 @@
|
|
||||||
- name: browser.privatebrowsing.forceMediaMemoryCache
|
|
||||||
type: bool
|
|
||||||
value: false
|
|
||||||
mirror: always
|
|
||||||
|
|
||||||
+# Disable state restoration, allowing the kiosk desktop environment to manage state and position.
|
|
||||||
+- name: browser.restoreWindowState.disabled
|
|
||||||
+ type: bool
|
|
||||||
+ value: false
|
|
||||||
+ mirror: always
|
|
||||||
+
|
|
||||||
# Communicates the toolbar color to platform (for e.g., prefers-color-scheme).
|
|
||||||
#
|
|
||||||
# Returns whether the toolbar is dark (0), light (1), or system (2). The
|
|
||||||
# theming code overrides it if appropriate.
|
|
||||||
- name: browser.theme.toolbar-theme
|
|
||||||
diff --git a/xpfe/appshell/AppWindow.cpp b/xpfe/appshell/AppWindow.cpp
|
|
||||||
--- a/xpfe/appshell/AppWindow.cpp
|
|
||||||
+++ b/xpfe/appshell/AppWindow.cpp
|
|
||||||
@@ -58,10 +58,11 @@
|
|
||||||
#include "mozilla/AutoRestore.h"
|
|
||||||
#include "mozilla/Preferences.h"
|
|
||||||
#include "mozilla/PresShell.h"
|
|
||||||
#include "mozilla/Services.h"
|
|
||||||
#include "mozilla/SpinEventLoopUntil.h"
|
|
||||||
+#include "mozilla/StaticPrefs_browser.h"
|
|
||||||
#include "mozilla/dom/BarProps.h"
|
|
||||||
#include "mozilla/dom/DOMRect.h"
|
|
||||||
#include "mozilla/dom/Element.h"
|
|
||||||
#include "mozilla/dom/Event.h"
|
|
||||||
#include "mozilla/dom/ScriptSettings.h"
|
|
||||||
@@ -2393,10 +2394,16 @@
|
|
||||||
nsCOMPtr<dom::Element> docShellElement = GetWindowDOMElement();
|
|
||||||
if (!docShellElement) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // Disable state restoration, allowing the kiosk desktop environment
|
|
||||||
+ // to manage state and position.
|
|
||||||
+ if (StaticPrefs::browser_restoreWindowState_disabled()) {
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
// Check if the window wants to persist anything.
|
|
||||||
nsAutoString persist;
|
|
||||||
docShellElement->GetAttr(nsGkAtoms::persist, persist);
|
|
||||||
if (persist.IsEmpty()) {
|
|
||||||
return;
|
|
||||||
|
|
||||||
@ -1,19 +0,0 @@
|
|||||||
diff --git a/gfx/webrender_bindings/RenderCompositorSWGL.cpp b/gfx/webrender_bindings/RenderCompositorSWGL.cpp
|
|
||||||
--- a/gfx/webrender_bindings/RenderCompositorSWGL.cpp
|
|
||||||
+++ b/gfx/webrender_bindings/RenderCompositorSWGL.cpp
|
|
||||||
@@ -76,12 +76,14 @@
|
|
||||||
const wr::DeviceIntRect* aOpaqueRects, size_t aNumOpaqueRects) {
|
|
||||||
// Request a new draw target to use from the widget...
|
|
||||||
MOZ_ASSERT(!mDT);
|
|
||||||
mDT = mWidget->StartRemoteDrawingInRegion(mDirtyRegion);
|
|
||||||
if (!mDT) {
|
|
||||||
+#if !defined(MOZ_WAYLAND)
|
|
||||||
gfxCriticalNoteOnce
|
|
||||||
<< "RenderCompositorSWGL failed mapping default framebuffer, no dt";
|
|
||||||
+#endif
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
// Attempt to lock the underlying buffer directly from the draw target.
|
|
||||||
// Verify that the size at least matches what the widget claims and that
|
|
||||||
// the format is BGRA8 as SWGL requires.
|
|
||||||
|
|
||||||
@ -1,14 +0,0 @@
|
|||||||
diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml
|
|
||||||
index acadd3a2cc..11b217174d 100644
|
|
||||||
--- a/modules/libpref/init/StaticPrefList.yaml
|
|
||||||
+++ b/modules/libpref/init/StaticPrefList.yaml
|
|
||||||
@@ -12561,6 +12561,8 @@
|
|
||||||
type: RelaxedAtomicBool
|
|
||||||
#if defined(MOZ_AV1)
|
|
||||||
value: true
|
|
||||||
+#else
|
|
||||||
+ value: false
|
|
||||||
#endif
|
|
||||||
mirror: always
|
|
||||||
|
|
||||||
|
|
||||||
45
SOURCES/build-aarch64-skia.patch
Normal file
45
SOURCES/build-aarch64-skia.patch
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
diff -up firefox-72.0/gfx/skia/skia/include/private/SkHalf.h.aarch64-skia firefox-72.0/gfx/skia/skia/include/private/SkHalf.h
|
||||||
|
--- firefox-72.0/gfx/skia/skia/include/private/SkHalf.h.aarch64-skia 2020-01-02 22:33:02.000000000 +0100
|
||||||
|
+++ firefox-72.0/gfx/skia/skia/include/private/SkHalf.h 2020-01-03 09:00:37.537296105 +0100
|
||||||
|
@@ -40,7 +40,7 @@ static inline Sk4h SkFloatToHalf_finite_
|
||||||
|
|
||||||
|
static inline Sk4f SkHalfToFloat_finite_ftz(uint64_t rgba) {
|
||||||
|
Sk4h hs = Sk4h::Load(&rgba);
|
||||||
|
-#if !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64)
|
||||||
|
+#if 0 // !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64)
|
||||||
|
float32x4_t fs;
|
||||||
|
asm ("fcvtl %[fs].4s, %[hs].4h \n" // vcvt_f32_f16(...)
|
||||||
|
: [fs] "=w" (fs) // =w: write-only NEON register
|
||||||
|
@@ -62,7 +62,7 @@ static inline Sk4f SkHalfToFloat_finite_
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline Sk4h SkFloatToHalf_finite_ftz(const Sk4f& fs) {
|
||||||
|
-#if !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64)
|
||||||
|
+#if 0 // !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64)
|
||||||
|
float32x4_t vec = fs.fVec;
|
||||||
|
asm ("fcvtn %[vec].4h, %[vec].4s \n" // vcvt_f16_f32(vec)
|
||||||
|
: [vec] "+w" (vec)); // +w: read-write NEON register
|
||||||
|
diff -up firefox-72.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h.aarch64-skia firefox-72.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h
|
||||||
|
--- firefox-72.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h.aarch64-skia 2020-01-03 09:00:37.538296107 +0100
|
||||||
|
+++ firefox-72.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h 2020-01-03 10:11:41.259219508 +0100
|
||||||
|
@@ -1087,7 +1087,7 @@ SI F from_half(U16 h) {
|
||||||
|
}
|
||||||
|
|
||||||
|
SI U16 to_half(F f) {
|
||||||
|
-#if defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) \
|
||||||
|
+#if 0 //defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) \
|
||||||
|
&& !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
|
||||||
|
return vcvt_f16_f32(f);
|
||||||
|
|
||||||
|
diff -up firefox-72.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h.aarch64-skia firefox-72.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h
|
||||||
|
--- firefox-72.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h.aarch64-skia 2020-01-03 09:00:37.538296107 +0100
|
||||||
|
+++ firefox-72.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h 2020-01-03 10:11:53.513250979 +0100
|
||||||
|
@@ -183,8 +183,6 @@ SI F F_from_Half(U16 half) {
|
||||||
|
SI U16 Half_from_F(F f) {
|
||||||
|
#if defined(USING_NEON_FP16)
|
||||||
|
return bit_pun<U16>(f);
|
||||||
|
-#elif defined(USING_NEON_F16C)
|
||||||
|
- return (U16)vcvt_f16_f32(f);
|
||||||
|
#elif defined(USING_AVX512F)
|
||||||
|
return (U16)_mm512_cvtps_ph((__m512 )f, _MM_FROUND_CUR_DIRECTION );
|
||||||
|
#elif defined(USING_AVX_F16C)
|
||||||
12
SOURCES/build-arm-libaom.patch
Normal file
12
SOURCES/build-arm-libaom.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff -up firefox-73.0/media/libaom/moz.build.old firefox-73.0/media/libaom/moz.build
|
||||||
|
--- firefox-73.0/media/libaom/moz.build.old 2020-02-07 23:13:28.000000000 +0200
|
||||||
|
+++ firefox-73.0/media/libaom/moz.build 2020-02-17 10:30:08.509805092 +0200
|
||||||
|
@@ -55,7 +55,7 @@ elif CONFIG['CPU_ARCH'] == 'arm':
|
||||||
|
|
||||||
|
for f in SOURCES:
|
||||||
|
if f.endswith('neon.c'):
|
||||||
|
- SOURCES[f].flags += CONFIG['VPX_ASFLAGS']
|
||||||
|
+ SOURCES[f].flags += CONFIG['NEON_FLAGS']
|
||||||
|
|
||||||
|
if CONFIG['OS_TARGET'] == 'Android':
|
||||||
|
# For cpu-features.h
|
||||||
12
SOURCES/build-arm-libopus.patch
Normal file
12
SOURCES/build-arm-libopus.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff -up firefox-66.0/media/libopus/silk/arm/arm_silk_map.c.old firefox-66.0/media/libopus/silk/arm/arm_silk_map.c
|
||||||
|
--- firefox-66.0/media/libopus/silk/arm/arm_silk_map.c.old 2019-03-12 21:07:35.356677522 +0100
|
||||||
|
+++ firefox-66.0/media/libopus/silk/arm/arm_silk_map.c 2019-03-12 21:07:42.937693394 +0100
|
||||||
|
@@ -28,7 +28,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
# include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-#include "main_FIX.h"
|
||||||
|
+#include "fixed/main_FIX.h"
|
||||||
|
#include "NSQ.h"
|
||||||
|
#include "SigProc_FIX.h"
|
||||||
|
|
||||||
45
SOURCES/build-ascii-decode-fail-rhel7.patch
Normal file
45
SOURCES/build-ascii-decode-fail-rhel7.patch
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
diff -up firefox-102.0/third_party/python/PyYAML/lib3/yaml/reader.py.build-ascii-decode-fail-rhel7 firefox-102.0/third_party/python/PyYAML/lib3/yaml/reader.py
|
||||||
|
--- firefox-102.0/third_party/python/PyYAML/lib3/yaml/reader.py.build-ascii-decode-fail-rhel7 2022-06-23 09:11:39.000000000 +0200
|
||||||
|
+++ firefox-102.0/third_party/python/PyYAML/lib3/yaml/reader.py 2022-08-16 13:24:31.697757209 +0200
|
||||||
|
@@ -73,6 +73,8 @@ class Reader(object):
|
||||||
|
self.name = "<unicode string>"
|
||||||
|
self.check_printable(stream)
|
||||||
|
self.buffer = stream+'\0'
|
||||||
|
+ #self.encoding = 'utf-8'
|
||||||
|
+ #self.raw_decode = codecs.utf_8_decode
|
||||||
|
elif isinstance(stream, bytes):
|
||||||
|
self.name = "<byte string>"
|
||||||
|
self.raw_buffer = stream
|
||||||
|
@@ -83,6 +85,11 @@ class Reader(object):
|
||||||
|
self.eof = False
|
||||||
|
self.raw_buffer = None
|
||||||
|
self.determine_encoding()
|
||||||
|
+ print("DEBUG_OUTPUT:")
|
||||||
|
+ print(self.name)
|
||||||
|
+ print(self.encoding)
|
||||||
|
+ print(self.stream)
|
||||||
|
+ #print(self.stream.read())
|
||||||
|
|
||||||
|
def peek(self, index=0):
|
||||||
|
try:
|
||||||
|
diff -up firefox-102.0/toolkit/components/nimbus/generate/generate_feature_manifest.py.build-ascii-decode-fail-rhel7 firefox-102.0/toolkit/components/nimbus/generate/generate_feature_manifest.py
|
||||||
|
--- firefox-102.0/toolkit/components/nimbus/generate/generate_feature_manifest.py.build-ascii-decode-fail-rhel7 2022-08-16 14:16:33.432529817 +0200
|
||||||
|
+++ firefox-102.0/toolkit/components/nimbus/generate/generate_feature_manifest.py 2022-08-17 08:01:38.175878171 +0200
|
||||||
|
@@ -37,7 +37,7 @@ def generate_feature_manifest(fd, input_
|
||||||
|
write_fm_js_headers(fd)
|
||||||
|
nimbus_dir_path = pathlib.Path(input_file).parent
|
||||||
|
try:
|
||||||
|
- with open(input_file, "r") as yaml_input:
|
||||||
|
+ with open(input_file, "r", encoding="utf-8") as yaml_input:
|
||||||
|
data = yaml.safe_load(yaml_input)
|
||||||
|
with pathlib.Path(nimbus_dir_path, FEATURE_MANIFEST_SCHEMA).open() as f:
|
||||||
|
schema = json.load(f)
|
||||||
|
@@ -92,7 +92,7 @@ def generate_platform_feature_manifest(f
|
||||||
|
)
|
||||||
|
|
||||||
|
try:
|
||||||
|
- with open(input_file, "r") as yaml_input:
|
||||||
|
+ with open(input_file, "r", encoding="utf-8") as yaml_input:
|
||||||
|
data = yaml.safe_load(yaml_input)
|
||||||
|
fd.write(file_structure(data))
|
||||||
|
except (IOError) as e:
|
||||||
@ -1,12 +1,12 @@
|
|||||||
diff -up firefox-128.0/toolkit/moz.configure.disable-elfhack firefox-128.0/toolkit/moz.configure
|
diff -up firefox-97.0/toolkit/moz.configure.disable-elfhack firefox-97.0/toolkit/moz.configure
|
||||||
--- firefox-128.0/toolkit/moz.configure.disable-elfhack 2024-06-19 17:24:29.964976617 +0200
|
--- firefox-97.0/toolkit/moz.configure.disable-elfhack 2022-02-08 09:58:47.518047952 +0100
|
||||||
+++ firefox-128.0/toolkit/moz.configure 2024-06-19 17:24:53.015843805 +0200
|
+++ firefox-97.0/toolkit/moz.configure 2022-02-08 10:17:49.552945956 +0100
|
||||||
@@ -1553,7 +1553,7 @@ with only_when("--enable-compile-environ
|
@@ -1273,7 +1273,7 @@ with only_when("--enable-compile-environ
|
||||||
@depends(host, target)
|
help="{Enable|Disable} elf hacks",
|
||||||
def has_elfhack(host, target):
|
|
||||||
return (
|
|
||||||
- target.kernel == "Linux"
|
|
||||||
+ False and target.kernel == "Linux"
|
|
||||||
and host.kernel == "Linux"
|
|
||||||
and target.cpu in ("arm", "aarch64", "x86", "x86_64")
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
- set_config("USE_ELF_HACK", depends_if("--enable-elf-hack")(lambda _: True))
|
||||||
|
+ set_config("USE_ELF_HACK", depends_if("--enable-elf-hack")(lambda _: False))
|
||||||
|
|
||||||
|
|
||||||
|
@depends(build_environment)
|
||||||
|
|||||||
@ -1,12 +0,0 @@
|
|||||||
diff -up firefox-128.0/dom/gamepad/moz.build.gamepad firefox-128.0/dom/gamepad/moz.build
|
|
||||||
--- firefox-128.0/dom/gamepad/moz.build.gamepad 2024-07-30 16:24:07.326519645 +0200
|
|
||||||
+++ firefox-128.0/dom/gamepad/moz.build 2024-07-30 16:24:15.817492673 +0200
|
|
||||||
@@ -60,7 +60,7 @@ elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "wi
|
|
||||||
elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "android":
|
|
||||||
UNIFIED_SOURCES += ["android/AndroidGamepad.cpp"]
|
|
||||||
elif CONFIG["OS_ARCH"] in ("Linux", "FreeBSD", "DragonFly"):
|
|
||||||
- UNIFIED_SOURCES += ["linux/LinuxGamepad.cpp"]
|
|
||||||
+ UNIFIED_SOURCES += ["fallback/FallbackGamepad.cpp"]
|
|
||||||
else:
|
|
||||||
UNIFIED_SOURCES += ["fallback/FallbackGamepad.cpp"]
|
|
||||||
|
|
||||||
@ -1,24 +0,0 @@
|
|||||||
diff -up firefox-140.1.0/media/ffvpx/libavcodec/av1dec.c.build-ffvpx firefox-140.1.0/media/ffvpx/libavcodec/av1dec.c
|
|
||||||
--- firefox-140.1.0/media/ffvpx/libavcodec/av1dec.c.build-ffvpx 2025-07-14 19:14:53.000000000 +0200
|
|
||||||
+++ firefox-140.1.0/media/ffvpx/libavcodec/av1dec.c 2025-07-31 13:02:48.131126439 +0200
|
|
||||||
@@ -904,7 +904,7 @@ static av_cold int av1_decode_init(AVCod
|
|
||||||
ff_cbs_fragment_reset(&s->current_obu);
|
|
||||||
}
|
|
||||||
|
|
||||||
- s->dovi.logctx = avctx;
|
|
||||||
+ s->dovi.logctx = (AVContext *) avctx;
|
|
||||||
s->dovi.cfg.dv_profile = 10; // default for AV1
|
|
||||||
sd = ff_get_coded_side_data(avctx, AV_PKT_DATA_DOVI_CONF);
|
|
||||||
if (sd && sd->size >= sizeof(s->dovi.cfg))
|
|
||||||
diff -up firefox-140.1.0/media/ffvpx/libavcodec/libdav1d.c.build-ffvpx firefox-140.1.0/media/ffvpx/libavcodec/libdav1d.c
|
|
||||||
--- firefox-140.1.0/media/ffvpx/libavcodec/libdav1d.c.build-ffvpx 2025-07-14 19:14:54.000000000 +0200
|
|
||||||
+++ firefox-140.1.0/media/ffvpx/libavcodec/libdav1d.c 2025-07-31 13:03:08.395175190 +0200
|
|
||||||
@@ -293,7 +293,7 @@ static av_cold int libdav1d_init(AVCodec
|
|
||||||
c->delay = res > 1 ? res : 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
- dav1d->dovi.logctx = c;
|
|
||||||
+ dav1d->dovi.logctx = (AVContext *) c;
|
|
||||||
dav1d->dovi.cfg.dv_profile = 10; // default for AV1
|
|
||||||
sd = ff_get_coded_side_data(c, AV_PKT_DATA_DOVI_CONF);
|
|
||||||
if (sd && sd->size >= sizeof(dav1d->dovi.cfg))
|
|
||||||
@ -1,21 +0,0 @@
|
|||||||
diff -up firefox-128.0/config/external/moz.build.libaom firefox-128.0/config/external/moz.build
|
|
||||||
--- firefox-128.0/config/external/moz.build.libaom 2024-07-31 15:32:39.460374047 +0200
|
|
||||||
+++ firefox-128.0/config/external/moz.build 2024-07-31 15:34:41.646064796 +0200
|
|
||||||
@@ -39,9 +39,9 @@ if CONFIG["MOZ_VORBIS"]:
|
|
||||||
|
|
||||||
if not CONFIG["MOZ_SYSTEM_LIBVPX"]:
|
|
||||||
external_dirs += ["media/libvpx"]
|
|
||||||
+external_dirs += ["media/libaom"]
|
|
||||||
|
|
||||||
if not CONFIG["MOZ_SYSTEM_AV1"]:
|
|
||||||
- external_dirs += ["media/libaom"]
|
|
||||||
external_dirs += ["media/libdav1d"]
|
|
||||||
|
|
||||||
if not CONFIG["MOZ_SYSTEM_PNG"]:
|
|
||||||
diff -up firefox-128.0/third_party/aom/third_party/fastfeat/README.libaom firefox-128.0/third_party/aom/third_party/fastfeat/README
|
|
||||||
diff -up firefox-128.0/third_party/aom/third_party/googletest/README.libaom firefox-128.0/third_party/aom/third_party/googletest/README
|
|
||||||
diff -up firefox-128.0/third_party/aom/third_party/libwebm/README.libaom firefox-128.0/third_party/aom/third_party/libwebm/README
|
|
||||||
diff -up firefox-128.0/third_party/aom/third_party/libyuv/README.libaom firefox-128.0/third_party/aom/third_party/libyuv/README
|
|
||||||
diff -up firefox-128.0/third_party/aom/third_party/SVT-AV1/README.libaom firefox-128.0/third_party/aom/third_party/SVT-AV1/README
|
|
||||||
diff -up firefox-128.0/third_party/aom/third_party/vector/README.libaom firefox-128.0/third_party/aom/third_party/vector/README
|
|
||||||
diff -up firefox-128.0/third_party/aom/third_party/x86inc/README.libaom firefox-128.0/third_party/aom/third_party/x86inc/README
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
diff -up firefox-115.0.2/security/nss/lib/freebl/sha512-p8.s.ppc-abiv2 firefox-115.0.2/security/nss/lib/freebl/sha512-p8.s
|
|
||||||
--- firefox-115.0.2/security/nss/lib/freebl/sha512-p8.s.ppc-abiv2 2023-07-25 09:01:42.602375809 +0200
|
|
||||||
+++ firefox-115.0.2/security/nss/lib/freebl/sha512-p8.s 2023-07-25 09:01:48.273373924 +0200
|
|
||||||
@@ -3,7 +3,7 @@
|
|
||||||
# See the full LICENSE under scripts/.
|
|
||||||
|
|
||||||
.machine "any"
|
|
||||||
-.abiversion 2
|
|
||||||
+.abiversion 1
|
|
||||||
.text
|
|
||||||
|
|
||||||
.globl sha512_block_p8
|
|
||||||
49
SOURCES/build-remove-dav1d-from-wayland-dep.patch
Normal file
49
SOURCES/build-remove-dav1d-from-wayland-dep.patch
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
diff -up firefox-102.0/media/ffvpx/config_common.h.dav1d-remove firefox-102.0/media/ffvpx/config_common.h
|
||||||
|
--- firefox-102.0/media/ffvpx/config_common.h.dav1d-remove 2022-08-08 12:48:33.218128539 +0200
|
||||||
|
+++ firefox-102.0/media/ffvpx/config_common.h 2022-08-08 12:48:52.986003374 +0200
|
||||||
|
@@ -24,15 +24,11 @@
|
||||||
|
#undef CONFIG_VP8_VAAPI_HWACCEL
|
||||||
|
#undef CONFIG_VP9_VAAPI_HWACCEL
|
||||||
|
#undef CONFIG_AV1_VAAPI_HWACCEL
|
||||||
|
-#undef CONFIG_LIBDAV1D
|
||||||
|
-#undef CONFIG_AV1_DECODER
|
||||||
|
#define CONFIG_VAAPI 1
|
||||||
|
#define CONFIG_VAAPI_1 1
|
||||||
|
#define CONFIG_VP8_VAAPI_HWACCEL 1
|
||||||
|
#define CONFIG_VP9_VAAPI_HWACCEL 1
|
||||||
|
#define CONFIG_AV1_VAAPI_HWACCEL 1
|
||||||
|
-#define CONFIG_LIBDAV1D 1
|
||||||
|
-#define CONFIG_AV1_DECODER 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
diff -up firefox-102.0/media/ffvpx/libavcodec/moz.build.dav1d-remove firefox-102.0/media/ffvpx/libavcodec/moz.build
|
||||||
|
--- firefox-102.0/media/ffvpx/libavcodec/moz.build.dav1d-remove 2022-08-08 12:44:24.098710736 +0200
|
||||||
|
+++ firefox-102.0/media/ffvpx/libavcodec/moz.build 2022-08-08 12:46:42.635828719 +0200
|
||||||
|
@@ -104,17 +104,23 @@ if not CONFIG['MOZ_FFVPX_AUDIOONLY']:
|
||||||
|
]
|
||||||
|
if CONFIG['MOZ_WAYLAND']:
|
||||||
|
LOCAL_INCLUDES += ['/media/mozva']
|
||||||
|
+ if CONFIG['MOZ_DAV1D_ASM']:
|
||||||
|
+ SOURCES += [
|
||||||
|
+ 'libdav1d.c',
|
||||||
|
+ ]
|
||||||
|
SOURCES += [
|
||||||
|
'atsc_a53.c',
|
||||||
|
- 'libdav1d.c',
|
||||||
|
'vaapi_av1.c',
|
||||||
|
'vaapi_decode.c',
|
||||||
|
'vaapi_vp8.c',
|
||||||
|
'vaapi_vp9.c',
|
||||||
|
]
|
||||||
|
+ if CONFIG['MOZ_DAV1D_ASM']:
|
||||||
|
+ USE_LIBS += [
|
||||||
|
+ 'dav1d',
|
||||||
|
+ 'media_libdav1d_asm',
|
||||||
|
+ ]
|
||||||
|
USE_LIBS += [
|
||||||
|
- 'dav1d',
|
||||||
|
- 'media_libdav1d_asm',
|
||||||
|
'mozva'
|
||||||
|
]
|
||||||
|
|
||||||
@ -1,12 +1,11 @@
|
|||||||
diff -up firefox-140.0/python/mozbuild/mozbuild/nodeutil.py.build-rhel7-lower-node-min-version firefox-140.0/python/mozbuild/mozbuild/nodeutil.py
|
--- firefox-102.4.0/python/mozbuild/mozbuild/nodeutil.py.lower-node-min-version 2022-10-10 17:55:56.000000000 +0200
|
||||||
--- firefox-140.0/python/mozbuild/mozbuild/nodeutil.py.build-rhel7-lower-node-min-version 2025-06-02 15:26:51.000000000 +0200
|
+++ firefox-102.4.0/python/mozbuild/mozbuild/nodeutil.py 2022-10-17 14:57:47.476182627 +0200
|
||||||
+++ firefox-140.0/python/mozbuild/mozbuild/nodeutil.py 2025-06-12 11:54:37.075505124 +0200
|
@@ -13,7 +13,7 @@ from mozboot.util import get_tools_dir
|
||||||
@@ -10,7 +10,7 @@ from mozboot.util import get_tools_dir
|
|
||||||
from mozfile import which
|
from mozfile import which
|
||||||
from packaging.version import Version
|
from six import PY3
|
||||||
|
|
||||||
-NODE_MIN_VERSION = Version("12.22.12")
|
-NODE_MIN_VERSION = StrictVersion("10.24.1")
|
||||||
+NODE_MIN_VERSION = Version("10.24.0")
|
+NODE_MIN_VERSION = StrictVersion("10.24.0")
|
||||||
NPM_MIN_VERSION = Version("6.14.16")
|
NPM_MIN_VERSION = StrictVersion("6.14.12")
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
diff -up firefox-140.0/python/mozbuild/mozbuild/frontend/context.py.build-rhel7-nasm-dwarf firefox-140.0/python/mozbuild/mozbuild/frontend/context.py
|
diff -up firefox-91.0.1/python/mozbuild/mozbuild/frontend/context.py.rhel7-nasm firefox-91.0.1/python/mozbuild/mozbuild/frontend/context.py
|
||||||
--- firefox-140.0/python/mozbuild/mozbuild/frontend/context.py.build-rhel7-nasm-dwarf 2025-06-02 15:26:51.000000000 +0200
|
--- firefox-91.0.1/python/mozbuild/mozbuild/frontend/context.py.rhel7-nasm 2021-08-31 08:02:10.814740774 +0200
|
||||||
+++ firefox-140.0/python/mozbuild/mozbuild/frontend/context.py 2025-06-12 12:09:56.398728745 +0200
|
+++ firefox-91.0.1/python/mozbuild/mozbuild/frontend/context.py 2021-08-31 08:04:03.967146994 +0200
|
||||||
@@ -417,7 +417,7 @@ class AsmFlags(BaseCompileFlags):
|
@@ -420,7 +420,7 @@ class AsmFlags(BaseCompileFlags):
|
||||||
if self._context.config.substs.get("OS_ARCH") == "WINNT":
|
if self._context.config.substs.get("OS_ARCH") == "WINNT":
|
||||||
debug_flags += ["-F", "cv8"]
|
debug_flags += ["-F", "cv8"]
|
||||||
elif self._context.config.substs.get("OS_ARCH") != "Darwin":
|
elif self._context.config.substs.get("OS_ARCH") != "Darwin":
|
||||||
- debug_flags += ["-F", "dwarf"]
|
- debug_flags += ["-F", "dwarf"]
|
||||||
+ debug_flags += ["-F", "elf32"]
|
+ debug_flags += ["-f", "elf32"]
|
||||||
elif self._context.config.substs.get("CC_TYPE") == "clang-cl":
|
elif (
|
||||||
if self._context.config.substs.get("TARGET_CPU") == "aarch64":
|
self._context.config.substs.get("OS_ARCH") == "WINNT"
|
||||||
# armasm64 accepts a paucity of options compared to ml/ml64.
|
and self._context.config.substs.get("CPU_ARCH") == "aarch64"
|
||||||
|
|||||||
@ -1,20 +0,0 @@
|
|||||||
diff -up firefox-140.0/third_party/rust/neqo-crypto/.cargo-checksum.json.system-nss firefox-140.0/third_party/rust/neqo-crypto/.cargo-checksum.json
|
|
||||||
--- firefox-140.0/third_party/rust/neqo-crypto/.cargo-checksum.json.system-nss 2025-07-25 10:17:19.112202464 +0200
|
|
||||||
+++ firefox-140.0/third_party/rust/neqo-crypto/.cargo-checksum.json 2025-07-25 10:17:55.824333955 +0200
|
|
||||||
@@ -1 +1 @@
|
|
||||||
-{"files":{"Cargo.toml":"a57adef48614a58209447e8bd115a2de3d8a42917a0b9a2ae9a97cabc3400c6a","bindings/bindings.toml":"e7e4b75736cfcf4d52febacb99a6f6c6c7b1d648ed8bdc424648be876c850e91","bindings/nspr_err.h":"2d5205d017b536c2d838bcf9bc4ec79f96dd50e7bb9b73892328781f1ee6629d","bindings/nspr_error.h":"e41c03c77b8c22046f8618832c9569fbcc7b26d8b9bbc35eea7168f35e346889","bindings/nspr_io.h":"085b289849ef0e77f88512a27b4d9bdc28252bd4d39c6a17303204e46ef45f72","bindings/nspr_time.h":"2e637fd338a5cf0fd3fb0070a47f474a34c2a7f4447f31b6875f5a9928d0a261","bindings/nss_ciphers.h":"95ec6344a607558b3c5ba8510f463b6295f3a2fb3f538a01410531045a5f62d1","bindings/nss_init.h":"ef49045063782fb612aff459172cc6a89340f15005808608ade5320ca9974310","bindings/nss_p11.h":"0b81e64fe6db49b2ecff94edd850be111ef99ec11220e88ceb1c67be90143a78","bindings/nss_secerr.h":"713e8368bdae5159af7893cfa517dabfe5103cede051dee9c9557c850a2defc6","bindings/nss_ssl.h":"af222fb957b989e392e762fa2125c82608a0053aff4fb97e556691646c88c335","bindings/nss_sslerr.h":"24b97f092183d8486f774cdaef5030d0249221c78343570d83a4ee5b594210ae","bindings/nss_sslopt.h":"b7807eb7abdad14db6ad7bc51048a46b065a0ea65a4508c95a12ce90e59d1eea","build.rs":"2f54f79958878ed7988441955344dd1a2a079b1bb409e8f12a70284fd7e351ef","min_version.txt":"0f9ddf9ddaeb5137a5ab3d238d06286822f9579b1f46ba76312a8c6d76176500","src/aead.rs":"08d7cad82e3bec32661cfd1689e6611b30ae328ec88481cb32201dd255777365","src/aead_null.rs":"a766e2f71fd8b77a8f81bc60aaaafcffb6aef1f0a1f39ea07fef45b3696718ce","src/agent.rs":"ec90d7556231c57da3a191f508eaf1f820f22d6b7912ee45d1a594eb0fea7a82","src/agentio.rs":"1baecfb725b54717a6a74bb4664692d187f62747cc5e0495f59b06729f96dea2","src/auth.rs":"7a1524bef0a0c71616f5ee8b3976d66201210b809271bcf5d06c0e560ae482af","src/cert.rs":"4fdaa3834d8a72f41198449010fd5c3f6be6a54e429427c37bde5aab9421585c","src/constants.rs":"83606aeb646b2833a8094f9d980c266ecc3e8cb40c93a4820da221988319dd1a","src/ech.rs":"19d16af5a30e2060a8942a72487bd820c0d9c62ff1d3c490871752c56781c44b","src/err.rs":"4c7d0b46955b58aa9375210c2c5d24012056c3ad8a856b72d2c7c9542cc97046","src/exp.rs":"cd864fb5a61cd1472baa5b1d0951fc712753c22d21af83ebed09a01585f33b48","src/ext.rs":"a5676f8b9815cc7f6ed1da6fea091cf8754d8b80e90d37b726e905abe18930f8","src/hkdf.rs":"76c5abc8b2d6ee12d8a86cd730af2cf47a59b2fbfd3b8a635a1826636156794d","src/hp.rs":"6adf4ad78b5a065ab7310c69ad239eec156256043e2c185bf60b9d1f12ab1be4","src/lib.rs":"3ab979c264a909e663c5ef140cd57013180745b99937671c73a9003ca6347f41","src/min_version.rs":"c6e1f98b9f56db0622ac38c1be131c55acf4a0f09ed0d6283f4d6308e2d1301a","src/p11.rs":"49bcde067e55228dab483bd11b70dc29d40dc3c59fa60136daccb205dc468df0","src/prio.rs":"1858088afd2668e8fbff56959765b7d4df09342371b9282ade27bb4d7bd6ce69","src/replay.rs":"594ce92f368cbc5fb71ebfb62214f07d1e86df8e5ce94255d5593ffabb91cd03","src/result.rs":"5a76688787741de7a935dbbab4bcb917d481d1c9c50a34df7e510036feb3da17","src/secrets.rs":"5d85b1e15f47cd267fe70fa8ea7e4ebc4b07eab7713f451afeefcf15f146f8a5","src/selfencrypt.rs":"4f106465f582c38d3bb04cb5cbcbf65a349e3186784726d9f2bf511a4a4a35ee","src/ssl.rs":"04950bb534b5304eb417909a3a39ebaa9be234c7c13eacdc41c00a8edab1b09f","src/time.rs":"22989caf3dab85cfe955cc279fcca98a6df02d14fcd0e93cac7b39374b8b5763","tests/aead.rs":"e36ae77802df1ea6d17cfd1bd2178a3706089577d6fd1554ca86e748b8b235b9","tests/agent.rs":"fb95a2d5c86ce3fafcb127cd0a2a163e5ee70baf09b2c8483e4d1fb25644cee2","tests/ext.rs":"57af4e2df211fa8afdb73125d4344ef5c70c1ea4579107c3e6f5746308ee3e7b","tests/handshake.rs":"df8a901048268a390785e05e28cbc97b82e41e47d7eab2d5c0a57e434ca1adcf","tests/hkdf.rs":"1d2098dc8398395864baf13e4886cfd1da6d36118727c3b264f457ee3da6b048","tests/hp.rs":"7ee5d7290a3f61af67ad2c94670cba376027136370d9784948db655b7e00fe54","tests/init.rs":"3cfe8411ca31ad7dfb23822bb1570e1a5b2b334857173bdd7df086b65b81d95a","tests/selfencrypt.rs":"b65aed70e83dce660017159fc8a956d3b52e0807b590ad8d0a3a4265caa8c1fa"},"package":null}
|
|
||||||
\ No newline at end of file
|
|
||||||
+{"files":{"Cargo.toml":"a57adef48614a58209447e8bd115a2de3d8a42917a0b9a2ae9a97cabc3400c6a","bindings/bindings.toml":"e7e4b75736cfcf4d52febacb99a6f6c6c7b1d648ed8bdc424648be876c850e91","bindings/nspr_err.h":"2d5205d017b536c2d838bcf9bc4ec79f96dd50e7bb9b73892328781f1ee6629d","bindings/nspr_error.h":"e41c03c77b8c22046f8618832c9569fbcc7b26d8b9bbc35eea7168f35e346889","bindings/nspr_io.h":"085b289849ef0e77f88512a27b4d9bdc28252bd4d39c6a17303204e46ef45f72","bindings/nspr_time.h":"2e637fd338a5cf0fd3fb0070a47f474a34c2a7f4447f31b6875f5a9928d0a261","bindings/nss_ciphers.h":"95ec6344a607558b3c5ba8510f463b6295f3a2fb3f538a01410531045a5f62d1","bindings/nss_init.h":"ef49045063782fb612aff459172cc6a89340f15005808608ade5320ca9974310","bindings/nss_p11.h":"0b81e64fe6db49b2ecff94edd850be111ef99ec11220e88ceb1c67be90143a78","bindings/nss_secerr.h":"713e8368bdae5159af7893cfa517dabfe5103cede051dee9c9557c850a2defc6","bindings/nss_ssl.h":"af222fb957b989e392e762fa2125c82608a0053aff4fb97e556691646c88c335","bindings/nss_sslerr.h":"24b97f092183d8486f774cdaef5030d0249221c78343570d83a4ee5b594210ae","bindings/nss_sslopt.h":"b7807eb7abdad14db6ad7bc51048a46b065a0ea65a4508c95a12ce90e59d1eea","build.rs":"2f54f79958878ed7988441955344dd1a2a079b1bb409e8f12a70284fd7e351ef","min_version.txt":"0f9ddf9ddaeb5137a5ab3d238d06286822f9579b1f46ba76312a8c6d76176500","src/aead.rs":"08d7cad82e3bec32661cfd1689e6611b30ae328ec88481cb32201dd255777365","src/aead_null.rs":"a766e2f71fd8b77a8f81bc60aaaafcffb6aef1f0a1f39ea07fef45b3696718ce","src/agent.rs":"ec90d7556231c57da3a191f508eaf1f820f22d6b7912ee45d1a594eb0fea7a82","src/agentio.rs":"1baecfb725b54717a6a74bb4664692d187f62747cc5e0495f59b06729f96dea2","src/auth.rs":"7a1524bef0a0c71616f5ee8b3976d66201210b809271bcf5d06c0e560ae482af","src/cert.rs":"4fdaa3834d8a72f41198449010fd5c3f6be6a54e429427c37bde5aab9421585c","src/constants.rs":"50c1b84e06cd9a71bb9199f2518947a4d4ad3e5c33c1b86c585486dc43e872a0","src/ech.rs":"19d16af5a30e2060a8942a72487bd820c0d9c62ff1d3c490871752c56781c44b","src/err.rs":"4c7d0b46955b58aa9375210c2c5d24012056c3ad8a856b72d2c7c9542cc97046","src/exp.rs":"cd864fb5a61cd1472baa5b1d0951fc712753c22d21af83ebed09a01585f33b48","src/ext.rs":"a5676f8b9815cc7f6ed1da6fea091cf8754d8b80e90d37b726e905abe18930f8","src/hkdf.rs":"76c5abc8b2d6ee12d8a86cd730af2cf47a59b2fbfd3b8a635a1826636156794d","src/hp.rs":"6adf4ad78b5a065ab7310c69ad239eec156256043e2c185bf60b9d1f12ab1be4","src/lib.rs":"3ab979c264a909e663c5ef140cd57013180745b99937671c73a9003ca6347f41","src/min_version.rs":"c6e1f98b9f56db0622ac38c1be131c55acf4a0f09ed0d6283f4d6308e2d1301a","src/p11.rs":"49bcde067e55228dab483bd11b70dc29d40dc3c59fa60136daccb205dc468df0","src/prio.rs":"1858088afd2668e8fbff56959765b7d4df09342371b9282ade27bb4d7bd6ce69","src/replay.rs":"594ce92f368cbc5fb71ebfb62214f07d1e86df8e5ce94255d5593ffabb91cd03","src/result.rs":"5a76688787741de7a935dbbab4bcb917d481d1c9c50a34df7e510036feb3da17","src/secrets.rs":"5d85b1e15f47cd267fe70fa8ea7e4ebc4b07eab7713f451afeefcf15f146f8a5","src/selfencrypt.rs":"4f106465f582c38d3bb04cb5cbcbf65a349e3186784726d9f2bf511a4a4a35ee","src/ssl.rs":"04950bb534b5304eb417909a3a39ebaa9be234c7c13eacdc41c00a8edab1b09f","src/time.rs":"22989caf3dab85cfe955cc279fcca98a6df02d14fcd0e93cac7b39374b8b5763","tests/aead.rs":"e36ae77802df1ea6d17cfd1bd2178a3706089577d6fd1554ca86e748b8b235b9","tests/agent.rs":"fb95a2d5c86ce3fafcb127cd0a2a163e5ee70baf09b2c8483e4d1fb25644cee2","tests/ext.rs":"57af4e2df211fa8afdb73125d4344ef5c70c1ea4579107c3e6f5746308ee3e7b","tests/handshake.rs":"df8a901048268a390785e05e28cbc97b82e41e47d7eab2d5c0a57e434ca1adcf","tests/hkdf.rs":"1d2098dc8398395864baf13e4886cfd1da6d36118727c3b264f457ee3da6b048","tests/hp.rs":"7ee5d7290a3f61af67ad2c94670cba376027136370d9784948db655b7e00fe54","tests/init.rs":"3cfe8411ca31ad7dfb23822bb1570e1a5b2b334857173bdd7df086b65b81d95a","tests/selfencrypt.rs":"b65aed70e83dce660017159fc8a956d3b52e0807b590ad8d0a3a4265caa8c1fa"},"package":null}
|
|
||||||
\ No newline at end of file
|
|
||||||
diff -up firefox-140.0/third_party/rust/neqo-crypto/src/constants.rs.system-nss firefox-140.0/third_party/rust/neqo-crypto/src/constants.rs
|
|
||||||
--- firefox-140.0/third_party/rust/neqo-crypto/src/constants.rs.system-nss 2025-07-25 10:16:27.299270237 +0200
|
|
||||||
+++ firefox-140.0/third_party/rust/neqo-crypto/src/constants.rs 2025-07-25 10:16:39.698529915 +0200
|
|
||||||
@@ -83,7 +83,7 @@ remap_enum! {
|
|
||||||
TLS_GRP_EC_SECP521R1 = ssl_grp_ec_secp521r1,
|
|
||||||
TLS_GRP_EC_X25519 = ssl_grp_ec_curve25519,
|
|
||||||
TLS_GRP_KEM_XYBER768D00 = ssl_grp_kem_xyber768d00,
|
|
||||||
- TLS_GRP_KEM_MLKEM768X25519 = ssl_grp_kem_mlkem768x25519,
|
|
||||||
+ TLS_GRP_KEM_MLKEM768X25519 = ssl_grp_kem_x25519mlkem768,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,49 +0,0 @@
|
|||||||
From 13858b4787c24a40cdce819b963baebff186cfe0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Paul Murphy <murp@redhat.com>
|
|
||||||
Date: Tue, 25 Nov 2025 08:55:25 -0600
|
|
||||||
Subject: [PATCH] HACK: workaround s390x
|
|
||||||
|
|
||||||
Attempt to workaround what seems to be a codegen related bug on s390x.
|
|
||||||
|
|
||||||
This seems to avoid a crash related to Ident or Punct structures on
|
|
||||||
s390x.
|
|
||||||
|
|
||||||
For: RHEL-118250
|
|
||||||
---
|
|
||||||
third_party/rust/proc-macro2/.cargo-checksum.json | 2 +-
|
|
||||||
third_party/rust/proc-macro2/src/lib.rs | 4 ++++
|
|
||||||
2 files changed, 5 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/third_party/rust/proc-macro2/.cargo-checksum.json b/third_party/rust/proc-macro2/.cargo-checksum.json
|
|
||||||
index b0d735a3a2d6..c47ce4ac5611 100644
|
|
||||||
--- a/third_party/rust/proc-macro2/.cargo-checksum.json
|
|
||||||
+++ b/third_party/rust/proc-macro2/.cargo-checksum.json
|
|
||||||
@@ -1 +1 @@
|
|
||||||
-{"files":{"Cargo.toml":"41a9465146a2b62a642e29f065718649e686d3c9585736596392dd941c9b0bef","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"c609b6865476d6c35879784e9155367a97a0da496aa5c3c61488440a20f59883","build.rs":"cf78c0005f11d54ca42dbaee77cb76a440e6fa2e0b64798d3f74c04770a0ad2b","build/probe.rs":"971fd2178dc506ccdc5c2065c37b77696a4aee8e00330ca52625db4a857f68d3","rust-toolchain.toml":"6bbb61302978c736b2da03e4fb40e3beab908f85d533ab46fd541e637b5f3e0f","src/detection.rs":"ed9a5f9a979ab01247d7a68eeb1afa3c13209334c5bfff0f9289cb07e5bb4e8b","src/extra.rs":"29f094473279a29b71c3cc9f5fa27c2e2c30c670390cf7e4b7cf451486cc857e","src/fallback.rs":"be1ce5e32c88c29d41d2ab663375951817d52decce3dc9e335ec22378be8fa65","src/lib.rs":"97ca48f50ad15fbcef42b31fb4fbfb8e4a1c5f946d776aa44fd04b37d7c64b32","src/location.rs":"9225c5a55f03b56cce42bc55ceb509e8216a5e0b24c94aa1cd071b04e3d6c15f","src/marker.rs":"c11c5a1be8bdf18be3fcd224393f350a9aae7ce282e19ce583c84910c6903a8f","src/parse.rs":"4b77cddbc2752bc4d38a65acd8b96b6786c5220d19b1e1b37810257b5d24132d","src/rcvec.rs":"1c3c48c4f819927cc445ae15ca3bb06775feff2fd1cb21901ae4c40c7e6b4e82","src/wrapper.rs":"e41df9abc846b40f0cf01150d22b91944d07cde93bc72aa34798101652675844","tests/comments.rs":"31115b3a56c83d93eef2fb4c9566bf4543e302560732986161b98aef504785ed","tests/features.rs":"a86deb8644992a4eb64d9fd493eff16f9cf9c5cb6ade3a634ce0c990cf87d559","tests/marker.rs":"473e962ee1aa0633dd5cf9a973b3bbd0ef43b740d4b7f6d008ff455a6b89d386","tests/test.rs":"2e7106f582367d168638be7364d4e9aadbe0affca8b51dd80f0b3977cc2fcf83","tests/test_fmt.rs":"b7743b612af65f2c88cbe109d50a093db7aa7e87f9e37bf45b7bbaeb240aa020","tests/test_size.rs":"62d8373ea46b669b87bc90a9c49b6d02f90ff4c21f9a25acebf60c9926e01fb7"},"package":"5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"}
|
|
||||||
\ No newline at end of file
|
|
||||||
+{"files":{},"package":"5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"}
|
|
||||||
diff --git a/third_party/rust/proc-macro2/src/lib.rs b/third_party/rust/proc-macro2/src/lib.rs
|
|
||||||
index 1430306bb31d..81f8c15a67e4 100644
|
|
||||||
--- a/third_party/rust/proc-macro2/src/lib.rs
|
|
||||||
+++ b/third_party/rust/proc-macro2/src/lib.rs
|
|
||||||
@@ -806,6 +806,8 @@ impl Debug for Group {
|
|
||||||
/// `Punct` with different forms of `Spacing` returned.
|
|
||||||
#[derive(Clone)]
|
|
||||||
pub struct Punct {
|
|
||||||
+ #[cfg(target_arch = "s390x")]
|
|
||||||
+ foo: u64,
|
|
||||||
ch: char,
|
|
||||||
spacing: Spacing,
|
|
||||||
span: Span,
|
|
||||||
@@ -834,6 +836,8 @@ impl Punct {
|
|
||||||
/// which can be further configured with the `set_span` method below.
|
|
||||||
pub fn new(ch: char, spacing: Spacing) -> Self {
|
|
||||||
Punct {
|
|
||||||
+ #[cfg(target_arch = "s390x")]
|
|
||||||
+ foo: 0xabcd,
|
|
||||||
ch,
|
|
||||||
spacing,
|
|
||||||
span: Span::call_site(),
|
|
||||||
--
|
|
||||||
2.51.1
|
|
||||||
|
|
||||||
39
SOURCES/disable-openh264-download.patch
Normal file
39
SOURCES/disable-openh264-download.patch
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
diff -up firefox-81.0/toolkit/modules/GMPInstallManager.jsm.old firefox-81.0/toolkit/modules/GMPInstallManager.jsm
|
||||||
|
--- firefox-81.0/toolkit/modules/GMPInstallManager.jsm.old 2020-09-25 10:39:04.769458703 +0200
|
||||||
|
+++ firefox-81.0/toolkit/modules/GMPInstallManager.jsm 2020-09-25 10:39:22.038504747 +0200
|
||||||
|
@@ -54,10 +54,6 @@ function getScopedLogger(prefix) {
|
||||||
|
|
||||||
|
const LOCAL_GMP_SOURCES = [
|
||||||
|
{
|
||||||
|
- id: "gmp-gmpopenh264",
|
||||||
|
- src: "chrome://global/content/gmp-sources/openh264.json",
|
||||||
|
- },
|
||||||
|
- {
|
||||||
|
id: "gmp-widevinecdm",
|
||||||
|
src: "chrome://global/content/gmp-sources/widevinecdm.json",
|
||||||
|
},
|
||||||
|
diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
|
||||||
|
--- a/toolkit/content/jar.mn
|
||||||
|
+++ b/toolkit/content/jar.mn
|
||||||
|
@@ -108,7 +108,6 @@ toolkit.jar:
|
||||||
|
#ifdef XP_MACOSX
|
||||||
|
content/global/macWindowMenu.js
|
||||||
|
#endif
|
||||||
|
- content/global/gmp-sources/openh264.json (gmp-sources/openh264.json)
|
||||||
|
content/global/gmp-sources/widevinecdm.json (gmp-sources/widevinecdm.json)
|
||||||
|
|
||||||
|
# Third party files
|
||||||
|
diff --git a/toolkit/modules/GMPInstallManager.jsm b/toolkit/modules/GMPInstallManager.jsm
|
||||||
|
--- a/toolkit/modules/GMPInstallManager.jsm
|
||||||
|
+++ b/toolkit/modules/GMPInstallManager.jsm
|
||||||
|
@@ -238,6 +234,9 @@ GMPInstallManager.prototype = {
|
||||||
|
* downloaderr, verifyerr or previouserrorencountered
|
||||||
|
*/
|
||||||
|
installAddon(gmpAddon) {
|
||||||
|
+ if (gmpAddon.isOpenH264) {
|
||||||
|
+ return Promise.reject({ type: "disabled" });
|
||||||
|
+ }
|
||||||
|
if (this._deferred) {
|
||||||
|
let log = getScopedLogger("GMPInstallManager.installAddon");
|
||||||
|
log.error("previous error encountered");
|
||||||
|
|
||||||
9
SOURCES/distribution.ini
Normal file
9
SOURCES/distribution.ini
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
[Global]
|
||||||
|
id=almalinux
|
||||||
|
version=1.0
|
||||||
|
about=Mozilla Firefox for AlmaLinux
|
||||||
|
|
||||||
|
[Preferences]
|
||||||
|
app.distributor=almalinux
|
||||||
|
app.distributor.channel=almalinux
|
||||||
|
app.partner.fedora=almalinux
|
||||||
@ -1,9 +0,0 @@
|
|||||||
[Global]
|
|
||||||
id=__ID__
|
|
||||||
version=1.0
|
|
||||||
about=Mozilla Firefox for __NAME__
|
|
||||||
|
|
||||||
[Preferences]
|
|
||||||
app.distributor=__ID__
|
|
||||||
app.distributor.channel=__ID__
|
|
||||||
app.partner.__ID__=__ID__
|
|
||||||
@ -1,29 +0,0 @@
|
|||||||
diff -up firefox-140.1.0/testing/mozbase/mozprocess/mozprocess/processhandler.py.exceptionHandled-for-IO-error-processhandler firefox-140.1.0/testing/mozbase/mozprocess/mozprocess/processhandler.py
|
|
||||||
--- firefox-140.1.0/testing/mozbase/mozprocess/mozprocess/processhandler.py.exceptionHandled-for-IO-error-processhandler 2025-07-14 19:14:55.000000000 +0200
|
|
||||||
+++ firefox-140.1.0/testing/mozbase/mozprocess/mozprocess/processhandler.py 2025-08-05 18:05:54.329479764 +0200
|
|
||||||
@@ -1098,11 +1098,22 @@ class ProcessReader:
|
|
||||||
|
|
||||||
def _read_stream(self, stream, queue, callback):
|
|
||||||
sentinel = "" if isinstance(stream, io.TextIOBase) else b""
|
|
||||||
- for line in iter(stream.readline, sentinel):
|
|
||||||
- queue.put((line, callback))
|
|
||||||
+ try:
|
|
||||||
+ for line in iter(stream.readline, sentinel):
|
|
||||||
+ queue.put((line, callback))
|
|
||||||
+ except ValueError as e:
|
|
||||||
+ if "I/O operation on closed file" in str(e):
|
|
||||||
+ # Stream was closed by the process, this is normal
|
|
||||||
+ pass
|
|
||||||
+ else:
|
|
||||||
+ raise
|
|
||||||
# Give a chance to the reading loop to exit without a timeout.
|
|
||||||
queue.put((b"", None))
|
|
||||||
- stream.close()
|
|
||||||
+ try:
|
|
||||||
+ stream.close()
|
|
||||||
+ except ValueError:
|
|
||||||
+ # Stream might already be closed
|
|
||||||
+ pass
|
|
||||||
|
|
||||||
def start(self, proc):
|
|
||||||
queue = Queue()
|
|
||||||
9
SOURCES/fedora-shebang-build.patch
Normal file
9
SOURCES/fedora-shebang-build.patch
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
diff -up firefox-73.0/build/unix/run-mozilla.sh.old firefox-73.0/build/unix/run-mozilla.sh
|
||||||
|
--- firefox-73.0/build/unix/run-mozilla.sh.old 2020-02-12 09:58:00.150895904 +0100
|
||||||
|
+++ firefox-73.0/build/unix/run-mozilla.sh 2020-02-12 09:58:06.505860696 +0100
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-#!/bin/sh
|
||||||
|
+#!/usr/bin/sh
|
||||||
|
#
|
||||||
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
@ -1,59 +0,0 @@
|
|||||||
diff --git a/security/nss/lib/mozpkix/lib/pkixnss.cpp b/security/nss/lib/mozpkix/lib/pkixnss.cpp
|
|
||||||
index 31aa1ddd67..93ab402bfd 100644
|
|
||||||
--- a/security/nss/lib/mozpkix/lib/pkixnss.cpp
|
|
||||||
+++ b/security/nss/lib/mozpkix/lib/pkixnss.cpp
|
|
||||||
@@ -303,6 +303,28 @@ DigestBufNSS(Input item,
|
|
||||||
return Success;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static SECOidTag
|
|
||||||
+findOIDByName(const char *cipherString)
|
|
||||||
+{
|
|
||||||
+ SECOidTag tag;
|
|
||||||
+ SECOidData *oid;
|
|
||||||
+
|
|
||||||
+ for (int i = 1; ; i++) {
|
|
||||||
+ SECOidTag tag = static_cast<SECOidTag>(i);
|
|
||||||
+ oid = SECOID_FindOIDByTag(tag);
|
|
||||||
+
|
|
||||||
+ if (oid == NULL) {
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (strcasecmp(oid->desc, cipherString) == 0) {
|
|
||||||
+ return tag;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return SEC_OID_UNKNOWN;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
Result
|
|
||||||
VerifyMLDSASignedDataNSS(Input data,
|
|
||||||
Input signature,
|
|
||||||
@@ -323,17 +345,14 @@ VerifyMLDSASignedDataNSS(Input data,
|
|
||||||
SECItem dataItem(UnsafeMapInputToSECItem(data));
|
|
||||||
CK_MECHANISM_TYPE mechanism;
|
|
||||||
|
|
||||||
- switch (pubk->u.mldsa.paramSet) {
|
|
||||||
- case SEC_OID_ML_DSA_44:
|
|
||||||
- case SEC_OID_ML_DSA_65:
|
|
||||||
- case SEC_OID_ML_DSA_87:
|
|
||||||
- mechanism = CKM_ML_DSA;
|
|
||||||
- signaturePolicyTag = pubk->u.mldsa.paramSet;
|
|
||||||
- hashPolicyTag = SEC_OID_UNKNOWN;
|
|
||||||
- break;
|
|
||||||
- default:
|
|
||||||
- return Result::ERROR_UNSUPPORTED_KEYALG;
|
|
||||||
- break;
|
|
||||||
+ if (pubk->u.mldsa.params == findOIDByName("ML-DSA-44") ||
|
|
||||||
+ pubk->u.mldsa.params == findOIDByName("ML-DSA-65") ||
|
|
||||||
+ pubk->u.mldsa.params == findOIDByName("ML-DSA-87")) {
|
|
||||||
+ hashPolicyTag = SEC_OID_UNKNOWN;
|
|
||||||
+ mechanism = CKM_ML_DSA;
|
|
||||||
+ signaturePolicyTag = pubk->u.mldsa.params;
|
|
||||||
+ } else {
|
|
||||||
+ return Result::ERROR_UNSUPPORTED_KEYALG;
|
|
||||||
}
|
|
||||||
|
|
||||||
SECOidTag policyTags[2] = {signaturePolicyTag, hashPolicyTag};
|
|
||||||
@ -1,323 +0,0 @@
|
|||||||
diff --git a/toolkit/components/certviewer/content/certDecoder.mjs b/toolkit/components/certviewer/content/certDecoder.mjs
|
|
||||||
--- a/toolkit/components/certviewer/content/certDecoder.mjs
|
|
||||||
+++ b/toolkit/components/certviewer/content/certDecoder.mjs
|
|
||||||
@@ -5,10 +5,11 @@
|
|
||||||
import {
|
|
||||||
Certificate,
|
|
||||||
ECNamedCurves,
|
|
||||||
ECPublicKey,
|
|
||||||
RSAPublicKey,
|
|
||||||
+ MLDSAPublicKey,
|
|
||||||
} from "./vendor/pkijs.js";
|
|
||||||
|
|
||||||
const getTimeZone = () => {
|
|
||||||
let timeZone = new Date().toString().match(/\(([A-Za-z\s].*)\)/);
|
|
||||||
if (timeZone === null) {
|
|
||||||
@@ -45,10 +46,19 @@
|
|
||||||
x, // x coordinate
|
|
||||||
y, // y coordinate
|
|
||||||
xy: `04:${x}:${y}`, // 04 (uncompressed) public key
|
|
||||||
};
|
|
||||||
}
|
|
||||||
+ if (publicKey instanceof MLDSAPublicKey) {
|
|
||||||
+ let keyHex = publicKey.rhoT1.valueBlock.valueHex;
|
|
||||||
+ let keyBytes = new Uint8Array(keyHex);
|
|
||||||
+ return {
|
|
||||||
+ kty: publicKey.alg,
|
|
||||||
+ keysize: keyBytes.length,
|
|
||||||
+ rhoT1: hashify(keyHex),
|
|
||||||
+ };
|
|
||||||
+ }
|
|
||||||
return { kty: "Unknown" };
|
|
||||||
};
|
|
||||||
|
|
||||||
const getX509Ext = (extensions, v) => {
|
|
||||||
for (var extension in extensions) {
|
|
||||||
@@ -1132,10 +1142,13 @@
|
|
||||||
"2.16.840.1.101.3.4.3.2": "DSA with SHA-256",
|
|
||||||
"1.2.840.10045.4.1": "ECDSA with SHA-1",
|
|
||||||
"1.2.840.10045.4.3.2": "ECDSA with SHA-256",
|
|
||||||
"1.2.840.10045.4.3.3": "ECDSA with SHA-384",
|
|
||||||
"1.2.840.10045.4.3.4": "ECDSA with SHA-512",
|
|
||||||
+ "2.16.840.1.101.3.4.3.17": "ML-DSA-44",
|
|
||||||
+ "2.16.840.1.101.3.4.3.18": "ML-DSA-65",
|
|
||||||
+ "2.16.840.1.101.3.4.3.19": "ML-DSA-87",
|
|
||||||
},
|
|
||||||
|
|
||||||
aia: {
|
|
||||||
"1.3.6.1.5.5.7.48.1": "Online Certificate Status Protocol (OCSP)",
|
|
||||||
"1.3.6.1.5.5.7.48.2": "CA Issuers",
|
|
||||||
diff --git a/toolkit/components/certviewer/content/certviewer.mjs b/toolkit/components/certviewer/content/certviewer.mjs
|
|
||||||
--- a/toolkit/components/certviewer/content/certviewer.mjs
|
|
||||||
+++ b/toolkit/components/certviewer/content/certviewer.mjs
|
|
||||||
@@ -74,10 +74,23 @@
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result ? result : false;
|
|
||||||
};
|
|
||||||
|
|
||||||
+const getMLDSASecurityLevel = signatureName => {
|
|
||||||
+ switch (signatureName) {
|
|
||||||
+ case "ML-DSA-44":
|
|
||||||
+ return "Level 2 (NIST)";
|
|
||||||
+ case "ML-DSA-65":
|
|
||||||
+ return "Level 3 (NIST)";
|
|
||||||
+ case "ML-DSA-87":
|
|
||||||
+ return "Level 5 (NIST)";
|
|
||||||
+ default:
|
|
||||||
+ return null;
|
|
||||||
+ }
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
export const adjustCertInformation = cert => {
|
|
||||||
let certItems = [];
|
|
||||||
let tabName = cert?.subject?.cn || "";
|
|
||||||
if (cert && !tabName) {
|
|
||||||
// No common name, use the value of the last item in the cert's entries.
|
|
||||||
@@ -173,10 +186,15 @@
|
|
||||||
createEntryItem("key-size", cert.subjectPublicKeyInfo.keysize),
|
|
||||||
createEntryItem("curve", cert.subjectPublicKeyInfo.crv),
|
|
||||||
createEntryItem("public-value", cert.subjectPublicKeyInfo.xy, true),
|
|
||||||
createEntryItem("exponent", cert.subjectPublicKeyInfo.e),
|
|
||||||
createEntryItem("modulus", cert.subjectPublicKeyInfo.n, true),
|
|
||||||
+ createEntryItem(
|
|
||||||
+ "mldsa-public-value",
|
|
||||||
+ cert.subjectPublicKeyInfo.rhoT1,
|
|
||||||
+ true
|
|
||||||
+ ),
|
|
||||||
].filter(elem => elem != null);
|
|
||||||
}
|
|
||||||
return items;
|
|
||||||
},
|
|
||||||
certItems,
|
|
||||||
@@ -190,14 +208,23 @@
|
|
||||||
createEntryItem("serial-number", cert.serialNumber, true),
|
|
||||||
createEntryItem(
|
|
||||||
"signature-algorithm",
|
|
||||||
cert.signature ? cert.signature.name : null
|
|
||||||
),
|
|
||||||
+ ];
|
|
||||||
+
|
|
||||||
+ const secLvl = getMLDSASecurityLevel(cert.signature?.name);
|
|
||||||
+ if (secLvl) {
|
|
||||||
+ items.push(createEntryItem("security-level", secLvl));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ items.push(
|
|
||||||
createEntryItem("version", cert.version),
|
|
||||||
- createEntryItem("download", cert.files ? cert.files.pem : null),
|
|
||||||
- ].filter(elem => elem != null);
|
|
||||||
- return items;
|
|
||||||
+ createEntryItem("download", cert.files ? cert.files.pem : null)
|
|
||||||
+ );
|
|
||||||
+
|
|
||||||
+ return items.filter(elem => elem != null);
|
|
||||||
},
|
|
||||||
certItems,
|
|
||||||
"miscellaneous",
|
|
||||||
false
|
|
||||||
);
|
|
||||||
diff --git a/toolkit/components/certviewer/content/vendor/pkijs.js b/toolkit/components/certviewer/content/vendor/pkijs.js
|
|
||||||
--- a/toolkit/components/certviewer/content/vendor/pkijs.js
|
|
||||||
+++ b/toolkit/components/certviewer/content/vendor/pkijs.js
|
|
||||||
@@ -8609,10 +8609,90 @@
|
|
||||||
this.publicExponent = new Integer({ valueHex: stringToArrayBuffer(fromBase64(json.e, true)).slice(0, 3) });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
RSAPublicKey.CLASS_NAME = "RSAPublicKey";
|
|
||||||
|
|
||||||
+/* @see https://www.ietf.org/archive/id/draft-ietf-lamps-dilithium-certificates-11.html */
|
|
||||||
+const RHO_T1 = "rhoT1";
|
|
||||||
+const ALG = "alg";
|
|
||||||
+const CLEAR_PROPS_MLDSA = [RHO_T1, ALG];
|
|
||||||
+const MLDSA_MIN_LENGTH = 32;
|
|
||||||
+class MLDSAPublicKey extends PkiObject {
|
|
||||||
+ constructor(parameters = {}) {
|
|
||||||
+ super();
|
|
||||||
+
|
|
||||||
+ this.rhoT1 = getParametersValue(parameters, RHO_T1, MLDSAPublicKey.defaultValues(RHO_T1));
|
|
||||||
+ this.alg = getParametersValue(parameters, ALG, MLDSAPublicKey.defaultValues(ALG));
|
|
||||||
+
|
|
||||||
+ if (parameters.json) {
|
|
||||||
+ this.fromJSON(parameters.json);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (parameters.schema) {
|
|
||||||
+ this.fromSchema(parameters.schema);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ static defaultValues(memberName) {
|
|
||||||
+ switch (memberName) {
|
|
||||||
+ case RHO_T1:
|
|
||||||
+ return new BitString();
|
|
||||||
+ case ALG:
|
|
||||||
+ return "";
|
|
||||||
+ default:
|
|
||||||
+ return super.defaultValues(memberName);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ static schema(parameters = {}) {
|
|
||||||
+ const names = getParametersValue(parameters, "names", {});
|
|
||||||
+ return new BitString({ name: names.rhoT1 || RHO_T1 });
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ fromSchema(schema) {
|
|
||||||
+ clearProps(schema, CLEAR_PROPS_MLDSA);
|
|
||||||
+
|
|
||||||
+ const asn1 = compareSchema(schema, schema, MLDSAPublicKey.schema({
|
|
||||||
+ names: { rhoT1: RHO_T1 }
|
|
||||||
+ }));
|
|
||||||
+
|
|
||||||
+ AsnError.assertSchema(asn1, this.className);
|
|
||||||
+
|
|
||||||
+ const bitString = asn1.result.rhoT1;
|
|
||||||
+ const length = bitString.valueBlock.valueHexView.length;
|
|
||||||
+
|
|
||||||
+ if (length < MLDSA_MIN_LENGTH || (length - MLDSA_MIN_LENGTH) % 320 !== 0) {
|
|
||||||
+ throw new Error(`Invalid ML-DSA key length: ${length} bytes`);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ this.rhoT1 = bitString;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ toSchema() {
|
|
||||||
+ return this.rhoT1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ toJSON() {
|
|
||||||
+ return {
|
|
||||||
+ rhoT1: Convert.ToBase64Url(this.rhoT1.valueBlock.valueHexView),
|
|
||||||
+ alg: this.alg
|
|
||||||
+ };
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ fromJSON(json) {
|
|
||||||
+ ParameterError.assert("json", json, "rhoT1");
|
|
||||||
+ const rawBuffer = stringToArrayBuffer(fromBase64(json.rhoT1, true));
|
|
||||||
+
|
|
||||||
+ if (rawBuffer.byteLength < MLDSA_MIN_LENGTH || (rawBuffer.byteLength - MLDSA_MIN_LENGTH) % 320 !== 0) {
|
|
||||||
+ throw new Error(`Invalid ML-DSA key length: ${rawBuffer.byteLength} bytes`);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ this.rhoT1 = new BitString({ valueHex: rawBuffer });
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+MLDSAPublicKey.CLASS_NAME = "MLDSAPublicKey";
|
|
||||||
+
|
|
||||||
const ALGORITHM$1 = "algorithm";
|
|
||||||
const SUBJECT_PUBLIC_KEY = "subjectPublicKey";
|
|
||||||
const CLEAR_PROPS$1a = [ALGORITHM$1, SUBJECT_PUBLIC_KEY];
|
|
||||||
class PublicKeyInfo extends PkiObject {
|
|
||||||
constructor(parameters = {}) {
|
|
||||||
@@ -8657,10 +8737,22 @@
|
|
||||||
catch (ex) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
+ case "2.16.840.1.101.3.4.3.17":
|
|
||||||
+ /* Already a bitstring */
|
|
||||||
+ this._parsedKey = new MLDSAPublicKey({ rhoT1: this.subjectPublicKey, alg: "ML-DSA-44" });
|
|
||||||
+ break;
|
|
||||||
+ case "2.16.840.1.101.3.4.3.18":
|
|
||||||
+ /* Already a bitstring */
|
|
||||||
+ this._parsedKey = new MLDSAPublicKey({ rhoT1: this.subjectPublicKey, alg: "ML-DSA-65" });
|
|
||||||
+ break;
|
|
||||||
+ case "2.16.840.1.101.3.4.3.19":
|
|
||||||
+ /* Already a bitstring */
|
|
||||||
+ this._parsedKey = new MLDSAPublicKey({ rhoT1: this.subjectPublicKey, alg: "ML-DSA-87" });
|
|
||||||
+ break;
|
|
||||||
}
|
|
||||||
this._parsedKey || (this._parsedKey = null);
|
|
||||||
}
|
|
||||||
return this._parsedKey || undefined;
|
|
||||||
}
|
|
||||||
@@ -8724,10 +8816,19 @@
|
|
||||||
jwk.kty = "EC";
|
|
||||||
break;
|
|
||||||
case "1.2.840.113549.1.1.1":
|
|
||||||
jwk.kty = "RSA";
|
|
||||||
break;
|
|
||||||
+ case "2.16.840.1.101.3.4.3.17":
|
|
||||||
+ jwk.kty = "ML-DSA-44";
|
|
||||||
+ break;
|
|
||||||
+ case "2.16.840.1.101.3.4.3.18":
|
|
||||||
+ jwk.kty = "ML-DSA-65";
|
|
||||||
+ break;
|
|
||||||
+ case "2.16.840.1.101.3.4.3.19":
|
|
||||||
+ jwk.kty = "ML-DSA-87";
|
|
||||||
+ break;
|
|
||||||
}
|
|
||||||
const publicKeyJWK = this.parsedKey.toJSON();
|
|
||||||
Object.assign(jwk, publicKeyJWK);
|
|
||||||
return jwk;
|
|
||||||
}
|
|
||||||
@@ -8746,10 +8847,31 @@
|
|
||||||
this.algorithm = new AlgorithmIdentifier({
|
|
||||||
algorithmId: "1.2.840.113549.1.1.1",
|
|
||||||
algorithmParams: new Null()
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
+ case "ML-DSA-44":
|
|
||||||
+ this.parsedKey = new MLDSAPublicKey({ json });
|
|
||||||
+ this.algorithm = new AlgorithmIdentifier({
|
|
||||||
+ algorithmId: "2.16.840.1.101.3.4.3.17",
|
|
||||||
+ algorithmParams: new Null()
|
|
||||||
+ });
|
|
||||||
+ break;
|
|
||||||
+ case "ML-DSA-65":
|
|
||||||
+ this.parsedKey = new MLDSAPublicKey({ json });
|
|
||||||
+ this.algorithm = new AlgorithmIdentifier({
|
|
||||||
+ algorithmId: "2.16.840.1.101.3.4.3.18",
|
|
||||||
+ algorithmParams: new Null()
|
|
||||||
+ });
|
|
||||||
+ break;
|
|
||||||
+ case "ML-DSA-87":
|
|
||||||
+ this.parsedKey = new MLDSAPublicKey({ json });
|
|
||||||
+ this.algorithm = new AlgorithmIdentifier({
|
|
||||||
+ algorithmId: "2.16.840.1.101.3.4.3.19",
|
|
||||||
+ algorithmParams: new Null()
|
|
||||||
+ });
|
|
||||||
+ break;
|
|
||||||
default:
|
|
||||||
throw new Error(`Invalid value for "kty" parameter: ${json.kty}`);
|
|
||||||
}
|
|
||||||
this.subjectPublicKey = new BitString({ valueHex: this.parsedKey.toSchema().toBER(false) });
|
|
||||||
}
|
|
||||||
@@ -24078,6 +24200,6 @@
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
initCryptoEngine();
|
|
||||||
|
|
||||||
-export { AbstractCryptoEngine, AccessDescription, Accuracy, AlgorithmIdentifier, AltName, ArgumentError, AsnError, AttCertValidityPeriod, Attribute, AttributeCertificateInfoV1, AttributeCertificateInfoV2, AttributeCertificateV1, AttributeCertificateV2, AttributeTypeAndValue, AuthenticatedSafe, AuthorityKeyIdentifier, BasicConstraints, BasicOCSPResponse, CAVersion, CRLBag, CRLDistributionPoints, CertBag, CertID, Certificate, CertificateChainValidationEngine, CertificatePolicies, CertificateRevocationList, CertificateSet, CertificateTemplate, CertificationRequest, ChainValidationCode, ChainValidationError, ContentInfo, CryptoEngine, DigestInfo, DistributionPoint, ECCCMSSharedInfo, ECNamedCurves, ECPrivateKey, ECPublicKey, EncapsulatedContentInfo, EncryptedContentInfo, EncryptedData, EnvelopedData, ExtKeyUsage, Extension, ExtensionValueFactory, Extensions, GeneralName, GeneralNames, GeneralSubtree, HASHED_MESSAGE, HASH_ALGORITHM, Holder, InfoAccess, IssuerAndSerialNumber, IssuerSerial, IssuingDistributionPoint, KEKIdentifier, KEKRecipientInfo, KeyAgreeRecipientIdentifier, KeyAgreeRecipientInfo, KeyBag, KeyTransRecipientInfo, MICROS, MILLIS, MacData, MessageImprint, NameConstraints, OCSPRequest, OCSPResponse, ObjectDigestInfo, OriginatorIdentifierOrKey, OriginatorInfo, OriginatorPublicKey, OtherCertificateFormat, OtherKeyAttribute, OtherPrimeInfo, OtherRecipientInfo, OtherRevocationInfoFormat, PBES2Params, PBKDF2Params, PFX, PKCS8ShroudedKeyBag, PKIStatus, PKIStatusInfo, POLICY_IDENTIFIER, POLICY_QUALIFIERS, ParameterError, PasswordRecipientinfo, PkiObject, PolicyConstraints, PolicyInformation, PolicyMapping, PolicyMappings, PolicyQualifierInfo, PrivateKeyInfo, PrivateKeyUsagePeriod, PublicKeyInfo, QCStatement, QCStatements, RDN, RSAESOAEPParams, RSAPrivateKey, RSAPublicKey, RSASSAPSSParams, RecipientEncryptedKey, RecipientEncryptedKeys, RecipientIdentifier, RecipientInfo, RecipientKeyIdentifier, RelativeDistinguishedNames, Request, ResponseBytes, ResponseData, RevocationInfoChoices, RevokedCertificate, SECONDS, SafeBag, SafeBagValueFactory, SafeContents, SecretBag, Signature, SignedAndUnsignedAttributes, SignedCertificateTimestamp, SignedCertificateTimestampList, SignedData, SignedDataVerifyError, SignerInfo, SingleResponse, SubjectDirectoryAttributes, TBSRequest, TSTInfo, TYPE$4 as TYPE, TYPE_AND_VALUES, Time, TimeStampReq, TimeStampResp, TimeType, V2Form, VALUE$5 as VALUE, VALUE_BEFORE_DECODE, checkCA, createCMSECDSASignature, createECDSASignatureFromCMS, engine, getAlgorithmByOID, getAlgorithmParameters, getCrypto, getEngine, getHashAlgorithm, getOIDByAlgorithm, getRandomValues, id_AnyPolicy, id_AuthorityInfoAccess, id_AuthorityKeyIdentifier, id_BaseCRLNumber, id_BasicConstraints, id_CRLBag_X509CRL, id_CRLDistributionPoints, id_CRLNumber, id_CRLReason, id_CertBag_AttributeCertificate, id_CertBag_SDSICertificate, id_CertBag_X509Certificate, id_CertificateIssuer, id_CertificatePolicies, id_ContentType_Data, id_ContentType_EncryptedData, id_ContentType_EnvelopedData, id_ContentType_SignedData, id_ExtKeyUsage, id_FreshestCRL, id_InhibitAnyPolicy, id_InvalidityDate, id_IssuerAltName, id_IssuingDistributionPoint, id_KeyUsage, id_MicrosoftAppPolicies, id_MicrosoftCaVersion, id_MicrosoftCertTemplateV1, id_MicrosoftCertTemplateV2, id_MicrosoftPrevCaCertHash, id_NameConstraints, id_PKIX_OCSP_Basic, id_PolicyConstraints, id_PolicyMappings, id_PrivateKeyUsagePeriod, id_QCStatements, id_SignedCertificateTimestampList, id_SubjectAltName, id_SubjectDirectoryAttributes, id_SubjectInfoAccess, id_SubjectKeyIdentifier, id_ad, id_ad_caIssuers, id_ad_ocsp, id_eContentType_TSTInfo, id_pkix, id_sha1, id_sha256, id_sha384, id_sha512, kdf, setEngine, stringPrep, verifySCTsForCertificate };
|
|
||||||
+export { AbstractCryptoEngine, AccessDescription, Accuracy, AlgorithmIdentifier, AltName, ArgumentError, AsnError, AttCertValidityPeriod, Attribute, AttributeCertificateInfoV1, AttributeCertificateInfoV2, AttributeCertificateV1, AttributeCertificateV2, AttributeTypeAndValue, AuthenticatedSafe, AuthorityKeyIdentifier, BasicConstraints, BasicOCSPResponse, CAVersion, CRLBag, CRLDistributionPoints, CertBag, CertID, Certificate, CertificateChainValidationEngine, CertificatePolicies, CertificateRevocationList, CertificateSet, CertificateTemplate, CertificationRequest, ChainValidationCode, ChainValidationError, ContentInfo, CryptoEngine, DigestInfo, DistributionPoint, ECCCMSSharedInfo, ECNamedCurves, ECPrivateKey, ECPublicKey, EncapsulatedContentInfo, EncryptedContentInfo, EncryptedData, EnvelopedData, ExtKeyUsage, Extension, ExtensionValueFactory, Extensions, GeneralName, GeneralNames, GeneralSubtree, HASHED_MESSAGE, HASH_ALGORITHM, Holder, InfoAccess, IssuerAndSerialNumber, IssuerSerial, IssuingDistributionPoint, KEKIdentifier, KEKRecipientInfo, KeyAgreeRecipientIdentifier, KeyAgreeRecipientInfo, KeyBag, KeyTransRecipientInfo, MICROS, MILLIS, MacData, MessageImprint, NameConstraints, OCSPRequest, OCSPResponse, ObjectDigestInfo, OriginatorIdentifierOrKey, OriginatorInfo, OriginatorPublicKey, OtherCertificateFormat, OtherKeyAttribute, OtherPrimeInfo, OtherRecipientInfo, OtherRevocationInfoFormat, PBES2Params, PBKDF2Params, PFX, PKCS8ShroudedKeyBag, PKIStatus, PKIStatusInfo, POLICY_IDENTIFIER, POLICY_QUALIFIERS, ParameterError, PasswordRecipientinfo, PkiObject, PolicyConstraints, PolicyInformation, PolicyMapping, PolicyMappings, PolicyQualifierInfo, PrivateKeyInfo, PrivateKeyUsagePeriod, PublicKeyInfo, QCStatement, QCStatements, RDN, RSAESOAEPParams, RSAPrivateKey, RSAPublicKey, RSASSAPSSParams, RecipientEncryptedKey, RecipientEncryptedKeys, RecipientIdentifier, RecipientInfo, RecipientKeyIdentifier, RelativeDistinguishedNames, Request, ResponseBytes, ResponseData, RevocationInfoChoices, RevokedCertificate, SECONDS, SafeBag, SafeBagValueFactory, SafeContents, SecretBag, Signature, SignedAndUnsignedAttributes, SignedCertificateTimestamp, SignedCertificateTimestampList, SignedData, SignedDataVerifyError, SignerInfo, SingleResponse, SubjectDirectoryAttributes, TBSRequest, TSTInfo, TYPE$4 as TYPE, TYPE_AND_VALUES, Time, TimeStampReq, TimeStampResp, TimeType, V2Form, VALUE$5 as VALUE, VALUE_BEFORE_DECODE, checkCA, createCMSECDSASignature, createECDSASignatureFromCMS, engine, getAlgorithmByOID, getAlgorithmParameters, getCrypto, getEngine, getHashAlgorithm, getOIDByAlgorithm, getRandomValues, id_AnyPolicy, id_AuthorityInfoAccess, id_AuthorityKeyIdentifier, id_BaseCRLNumber, id_BasicConstraints, id_CRLBag_X509CRL, id_CRLDistributionPoints, id_CRLNumber, id_CRLReason, id_CertBag_AttributeCertificate, id_CertBag_SDSICertificate, id_CertBag_X509Certificate, id_CertificateIssuer, id_CertificatePolicies, id_ContentType_Data, id_ContentType_EncryptedData, id_ContentType_EnvelopedData, id_ContentType_SignedData, id_ExtKeyUsage, id_FreshestCRL, id_InhibitAnyPolicy, id_InvalidityDate, id_IssuerAltName, id_IssuingDistributionPoint, id_KeyUsage, id_MicrosoftAppPolicies, id_MicrosoftCaVersion, id_MicrosoftCertTemplateV1, id_MicrosoftCertTemplateV2, id_MicrosoftPrevCaCertHash, id_NameConstraints, id_PKIX_OCSP_Basic, id_PolicyConstraints, id_PolicyMappings, id_PrivateKeyUsagePeriod, id_QCStatements, id_SignedCertificateTimestampList, id_SubjectAltName, id_SubjectDirectoryAttributes, id_SubjectInfoAccess, id_SubjectKeyIdentifier, id_ad, id_ad_caIssuers, id_ad_ocsp, id_eContentType_TSTInfo, id_pkix, id_sha1, id_sha256, id_sha384, id_sha512, kdf, setEngine, stringPrep, verifySCTsForCertificate, MLDSAPublicKey };
|
|
||||||
diff --git a/toolkit/locales/en-US/toolkit/about/certviewer.ftl b/toolkit/locales/en-US/toolkit/about/certviewer.ftl
|
|
||||||
--- a/toolkit/locales/en-US/toolkit/about/certviewer.ftl
|
|
||||||
+++ b/toolkit/locales/en-US/toolkit/about/certviewer.ftl
|
|
||||||
@@ -45,20 +45,22 @@
|
|
||||||
certificate-viewer-organization = Organization
|
|
||||||
certificate-viewer-organizational-unit = Organizational Unit
|
|
||||||
certificate-viewer-policy = Policy
|
|
||||||
certificate-viewer-protocol = Protocol
|
|
||||||
certificate-viewer-public-value = Public Value
|
|
||||||
+certificate-viewer-mldsa-public-value = Public Value
|
|
||||||
certificate-viewer-purposes = Purposes
|
|
||||||
certificate-viewer-qualifier = Qualifier
|
|
||||||
certificate-viewer-qualifiers = Qualifiers
|
|
||||||
certificate-viewer-required = Required
|
|
||||||
certificate-viewer-unsupported = <unsupported>
|
|
||||||
# Inc. means Incorporated, e.g GitHub is incorporated in Delaware
|
|
||||||
certificate-viewer-inc-state-province = Inc. State/Province
|
|
||||||
certificate-viewer-state-province = State/Province
|
|
||||||
certificate-viewer-sha-1 = SHA-1
|
|
||||||
certificate-viewer-sha-256 = SHA-256
|
|
||||||
+certificate-viewer-security-level = Security Level
|
|
||||||
certificate-viewer-serial-number = Serial Number
|
|
||||||
certificate-viewer-signature-algorithm = Signature Algorithm
|
|
||||||
certificate-viewer-signature-scheme = Signature Scheme
|
|
||||||
certificate-viewer-timestamp = Timestamp
|
|
||||||
certificate-viewer-value = Value
|
|
||||||
|
|
||||||
File diff suppressed because one or more lines are too long
@ -14,10 +14,11 @@ pref("browser.shell.checkDefaultBrowser", false);
|
|||||||
pref("network.manage-offline-status", true);
|
pref("network.manage-offline-status", true);
|
||||||
pref("extensions.shownSelectionUI", true);
|
pref("extensions.shownSelectionUI", true);
|
||||||
pref("ui.SpellCheckerUnderlineStyle", 1);
|
pref("ui.SpellCheckerUnderlineStyle", 1);
|
||||||
pref("startup.homepage_override_url", "%HOMEPAGE%");
|
pref("startup.homepage_override_url", "http://www.almalinux.org");
|
||||||
pref("startup.homepage_welcome_url", "%HOMEPAGE%");
|
pref("startup.homepage_welcome_url", "http://www.almalinux.org");
|
||||||
pref("browser.startup.homepage", "data:text/plain,browser.startup.homepage=file:///%PREFIX%/share/doc/HTML/index.html");
|
pref("browser.startup.homepage", "data:text/plain,browser.startup.homepage=file:///%PREFIX%/share/doc/HTML/index.html");
|
||||||
pref("media.gmp-gmpopenh264.autoupdate",true);
|
pref("media.gmp-gmpopenh264.provider.enabled",false);
|
||||||
|
pref("media.gmp-gmpopenh264.autoupdate",false);
|
||||||
pref("media.gmp-gmpopenh264.enabled",false);
|
pref("media.gmp-gmpopenh264.enabled",false);
|
||||||
pref("media.gmp.decoder.enabled", true);
|
pref("media.gmp.decoder.enabled", true);
|
||||||
pref("plugins.notifyMissingFlash", false);
|
pref("plugins.notifyMissingFlash", false);
|
||||||
@ -36,7 +37,3 @@ pref("browser.gnome-search-provider.enabled",true);
|
|||||||
pref("media.navigator.mediadatadecoder_vpx_enabled", true);
|
pref("media.navigator.mediadatadecoder_vpx_enabled", true);
|
||||||
/* See https://bugzilla.redhat.com/show_bug.cgi?id=1672424 */
|
/* See https://bugzilla.redhat.com/show_bug.cgi?id=1672424 */
|
||||||
pref("storage.nfs_filesystem", true);
|
pref("storage.nfs_filesystem", true);
|
||||||
/* Disable Private Attribution collection and submission */
|
|
||||||
pref("dom.private-attribution.submission.enabled", false);
|
|
||||||
/* ECH is not supported in the system nss */
|
|
||||||
pref("security.tls.ech.grease_probability", 0);
|
|
||||||
@ -1,10 +1,10 @@
|
|||||||
diff -up firefox-128.0/browser/app/profile/firefox.js.addons firefox-128.0/browser/app/profile/firefox.js
|
diff -up firefox-55.0/browser/app/profile/firefox.js.addons firefox-55.0/browser/app/profile/firefox.js
|
||||||
--- firefox-128.0/browser/app/profile/firefox.js.addons 2024-06-13 11:47:04.255428350 +0200
|
--- firefox-55.0/browser/app/profile/firefox.js.addons 2017-08-02 10:58:30.566363833 +0200
|
||||||
+++ firefox-128.0/browser/app/profile/firefox.js 2024-06-13 11:53:00.442837371 +0200
|
+++ firefox-55.0/browser/app/profile/firefox.js 2017-08-02 10:59:15.377216959 +0200
|
||||||
@@ -56,7 +56,8 @@ pref("extensions.systemAddon.update.enab
|
@@ -65,7 +65,8 @@ pref("extensions.systemAddon.update.url"
|
||||||
|
|
||||||
// Disable add-ons that are not installed by the user in all scopes by default.
|
// Disable add-ons that are not installed by the user in all scopes by default.
|
||||||
// See the SCOPE constants in AddonManager.sys.mjs for values to use here.
|
// See the SCOPE constants in AddonManager.jsm for values to use here.
|
||||||
-pref("extensions.autoDisableScopes", 15);
|
-pref("extensions.autoDisableScopes", 15);
|
||||||
+pref("extensions.autoDisableScopes", 0);
|
+pref("extensions.autoDisableScopes", 0);
|
||||||
+pref("extensions.showMismatchUI", false);
|
+pref("extensions.showMismatchUI", false);
|
||||||
|
|||||||
@ -1,48 +0,0 @@
|
|||||||
diff --git a/security/manager/ssl/nsNSSCallbacks.cpp b/security/manager/ssl/nsNSSCallbacks.cpp
|
|
||||||
index 2dc48c9f4c..0a7b84d787 100644
|
|
||||||
--- a/security/manager/ssl/nsNSSCallbacks.cpp
|
|
||||||
+++ b/security/manager/ssl/nsNSSCallbacks.cpp
|
|
||||||
@@ -722,6 +722,15 @@ nsCString getSignatureName(uint32_t aSignatureScheme) {
|
|
||||||
case ssl_sig_rsa_pkcs1_sha1md5:
|
|
||||||
signatureName = "RSA-PKCS1-SHA1MD5"_ns;
|
|
||||||
break;
|
|
||||||
+ case ssl_sig_mldsa44:
|
|
||||||
+ signatureName = "ML-DSA-44"_ns;
|
|
||||||
+ break;
|
|
||||||
+ case ssl_sig_mldsa65:
|
|
||||||
+ signatureName = "ML-DSA-65"_ns;
|
|
||||||
+ break;
|
|
||||||
+ case ssl_sig_mldsa87:
|
|
||||||
+ signatureName = "ML-DSA-87"_ns;
|
|
||||||
+ break;
|
|
||||||
// All other groups are not enabled in Firefox. See sEnabledSignatureSchemes
|
|
||||||
// in nsNSSIOLayer.cpp.
|
|
||||||
default:
|
|
||||||
@@ -1061,6 +1070,13 @@ void HandshakeCallback(PRFileDesc* fd, void* client_data) {
|
|
||||||
glean::ssl::auth_ecdsa_curve_full.AccumulateSingleSample(
|
|
||||||
ECCCurve(channelInfo.authKeyBits));
|
|
||||||
break;
|
|
||||||
+ case ssl_auth_mldsa44:
|
|
||||||
+ case ssl_auth_mldsa65:
|
|
||||||
+ case ssl_auth_mldsa87:
|
|
||||||
+ /* TODO: add auth_mldsa_key_size_full in ssl/metrics.yaml
|
|
||||||
+ glean::ssl::auth_mldsa_key_size_full.AccumulateSingleSample(
|
|
||||||
+ NonECCKeySize(channelInfo.authKeyBits)); */
|
|
||||||
+ break;
|
|
||||||
default:
|
|
||||||
MOZ_CRASH("impossible auth algorithm");
|
|
||||||
break;
|
|
||||||
diff --git a/security/manager/ssl/nsNSSIOLayer.cpp b/security/manager/ssl/nsNSSIOLayer.cpp
|
|
||||||
index b1a5f5c2df..7443011b13 100644
|
|
||||||
--- a/security/manager/ssl/nsNSSIOLayer.cpp
|
|
||||||
+++ b/security/manager/ssl/nsNSSIOLayer.cpp
|
|
||||||
@@ -1300,6 +1300,9 @@ static PRFileDesc* nsSSLIOLayerImportFD(PRFileDesc* fd,
|
|
||||||
// Please change getSignatureName in nsNSSCallbacks.cpp when changing the list
|
|
||||||
// here. See NOTE at SSL_SignatureSchemePrefSet call site.
|
|
||||||
static const SSLSignatureScheme sEnabledSignatureSchemes[] = {
|
|
||||||
+ ssl_sig_mldsa87,
|
|
||||||
+ ssl_sig_mldsa65,
|
|
||||||
+ ssl_sig_mldsa44,
|
|
||||||
ssl_sig_ecdsa_secp256r1_sha256,
|
|
||||||
ssl_sig_ecdsa_secp384r1_sha384,
|
|
||||||
ssl_sig_ecdsa_secp521r1_sha512,
|
|
||||||
@ -1,239 +0,0 @@
|
|||||||
diff --git a/security/nss/lib/mozpkix/include/pkix/pkixder.h b/security/nss/lib/mozpkix/include/pkix/pkixder.h
|
|
||||||
index ac1ec24393..40eb5027af 100644
|
|
||||||
--- a/security/nss/lib/mozpkix/include/pkix/pkixder.h
|
|
||||||
+++ b/security/nss/lib/mozpkix/include/pkix/pkixder.h
|
|
||||||
@@ -488,7 +488,7 @@ inline Result OptionalExtensions(Reader& input, uint8_t tag,
|
|
||||||
Result DigestAlgorithmIdentifier(Reader& input,
|
|
||||||
/*out*/ DigestAlgorithm& algorithm);
|
|
||||||
|
|
||||||
-enum class PublicKeyAlgorithm { RSA_PKCS1, RSA_PSS, ECDSA };
|
|
||||||
+enum class PublicKeyAlgorithm { RSA_PKCS1, RSA_PSS, ECDSA, MLDSA };
|
|
||||||
|
|
||||||
Result SignatureAlgorithmIdentifierValue(
|
|
||||||
Reader& input,
|
|
||||||
diff --git a/security/nss/lib/mozpkix/include/pkix/pkixnss.h b/security/nss/lib/mozpkix/include/pkix/pkixnss.h
|
|
||||||
index 6711959e71..b87e88a599 100644
|
|
||||||
--- a/security/nss/lib/mozpkix/include/pkix/pkixnss.h
|
|
||||||
+++ b/security/nss/lib/mozpkix/include/pkix/pkixnss.h
|
|
||||||
@@ -50,6 +50,13 @@ Result VerifyECDSASignedDataNSS(Input data, DigestAlgorithm digestAlgorithm,
|
|
||||||
Input signature, Input subjectPublicKeyInfo,
|
|
||||||
void* pkcs11PinArg);
|
|
||||||
|
|
||||||
+// Verifies the ML-DSA signature on the given data using the given ML-DSA
|
|
||||||
+// public key
|
|
||||||
+Result VerifyMLDSASignedDataNSS(Input data,
|
|
||||||
+ Input signature,
|
|
||||||
+ Input subjectPublicKeyInfo,
|
|
||||||
+ void* pkcs11PinArg);
|
|
||||||
+
|
|
||||||
// Computes the digest of the given data using the given digest algorithm.
|
|
||||||
//
|
|
||||||
// item contains the data to hash.
|
|
||||||
diff --git a/security/nss/lib/mozpkix/include/pkix/pkixtypes.h b/security/nss/lib/mozpkix/include/pkix/pkixtypes.h
|
|
||||||
index 6a07d6e885..f24bd546e4 100644
|
|
||||||
--- a/security/nss/lib/mozpkix/include/pkix/pkixtypes.h
|
|
||||||
+++ b/security/nss/lib/mozpkix/include/pkix/pkixtypes.h
|
|
||||||
@@ -334,6 +334,10 @@ class TrustDomain {
|
|
||||||
Input signature,
|
|
||||||
Input subjectPublicKeyInfo) = 0;
|
|
||||||
|
|
||||||
+ virtual Result VerifyMLDSASignedData(Input data,
|
|
||||||
+ Input signature,
|
|
||||||
+ Input subjectPublicKeyInfo) = 0;
|
|
||||||
+
|
|
||||||
// Check that the validity duration is acceptable.
|
|
||||||
//
|
|
||||||
// Return Success if the validity duration is acceptable,
|
|
||||||
diff --git a/security/nss/lib/mozpkix/lib/pkixc.cpp b/security/nss/lib/mozpkix/lib/pkixc.cpp
|
|
||||||
index 5dea13c43e..f797a3b3a1 100644
|
|
||||||
--- a/security/nss/lib/mozpkix/lib/pkixc.cpp
|
|
||||||
+++ b/security/nss/lib/mozpkix/lib/pkixc.cpp
|
|
||||||
@@ -143,6 +143,15 @@ class CodeSigningTrustDomain final : public TrustDomain {
|
|
||||||
subjectPublicKeyInfo, nullptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ virtual Result VerifyMLDSASignedData(Input data,
|
|
||||||
+ Input signature,
|
|
||||||
+ Input subjectPublicKeyInfo) override {
|
|
||||||
+ return VerifyMLDSASignedDataNSS(data,
|
|
||||||
+ signature,
|
|
||||||
+ subjectPublicKeyInfo,
|
|
||||||
+ nullptr);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
virtual Result CheckValidityIsAcceptable(Time notBefore, Time notAfter,
|
|
||||||
EndEntityOrCA endEntityOrCA,
|
|
||||||
KeyPurposeId keyPurpose) override {
|
|
||||||
diff --git a/security/nss/lib/mozpkix/lib/pkixcheck.cpp b/security/nss/lib/mozpkix/lib/pkixcheck.cpp
|
|
||||||
index 8b7e1bf73e..4ce73f3944 100644
|
|
||||||
--- a/security/nss/lib/mozpkix/lib/pkixcheck.cpp
|
|
||||||
+++ b/security/nss/lib/mozpkix/lib/pkixcheck.cpp
|
|
||||||
@@ -118,6 +118,9 @@ CheckSignatureAlgorithm(TrustDomain& trustDomain,
|
|
||||||
// for any curve that we support, the chances of us encountering a curve
|
|
||||||
// during path building is too low to be worth bothering with.
|
|
||||||
break;
|
|
||||||
+
|
|
||||||
+ case der::PublicKeyAlgorithm::MLDSA:
|
|
||||||
+ break;
|
|
||||||
MOZILLA_PKIX_UNREACHABLE_DEFAULT_ENUM
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -248,6 +251,24 @@ CheckSubjectPublicKeyInfoContents(Reader& input, TrustDomain& trustDomain,
|
|
||||||
0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01
|
|
||||||
};
|
|
||||||
|
|
||||||
+ // Params for pure ML-DSA-44 signature
|
|
||||||
+ // python DottedOIDToCode.py id-ml-dsa-44 2.16.840.1.101.3.4.3.17
|
|
||||||
+ static const uint8_t id_ml_dsa_44[] = {
|
|
||||||
+ 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x11
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ // Params for pure ML-DSA-65 signature
|
|
||||||
+ // python DottedOIDToCode.py id-ml-dsa-65 2.16.840.1.101.3.4.3.18
|
|
||||||
+ static const uint8_t id_ml_dsa_65[] = {
|
|
||||||
+ 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x12
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ // Params for pure ML-DSA-87 signature
|
|
||||||
+ // python DottedOIDToCode.py id-ml-dsa-87 2.16.840.1.101.3.4.3.19
|
|
||||||
+ static const uint8_t id_ml_dsa_87[] = {
|
|
||||||
+ 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x13
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
if (algorithmOID.MatchRest(id_ecPublicKey)) {
|
|
||||||
// An id-ecPublicKey AlgorithmIdentifier has a parameter that identifes
|
|
||||||
// the curve being used. Although RFC 5480 specifies multiple forms, we
|
|
||||||
@@ -361,6 +382,30 @@ CheckSubjectPublicKeyInfoContents(Reader& input, TrustDomain& trustDomain,
|
|
||||||
if (rv != Success) {
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
+ } else if (algorithmOID.MatchRest(id_ml_dsa_44) ||
|
|
||||||
+ algorithmOID.MatchRest(id_ml_dsa_65) ||
|
|
||||||
+ algorithmOID.MatchRest(id_ml_dsa_87)) {
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * The ML-DSA AlgorithmIdentifier is expected to contain only the OID,
|
|
||||||
+ * with no parameters field present. According to the Internet-Draft
|
|
||||||
+ * https://www.ietf.org/archive/id/draft-ietf-lamps-dilithium-certificates-11.html
|
|
||||||
+ * (Section 3), the AlgorithmIdentifier for ML-DSA variants must omit the `parameters`
|
|
||||||
+ * field entirely.
|
|
||||||
+ * In DER encoding, the absence of the parameters field means that after parsing the
|
|
||||||
+ * OID, no additional bytes should remain. Calling `der::End(algorithm)` confirms that
|
|
||||||
+ * this constraint is satisfied and that the structure is correctly encoded.
|
|
||||||
+ */
|
|
||||||
+ rv = der::End(algorithm);
|
|
||||||
+ if (rv != Success) {
|
|
||||||
+ return rv;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ Input rawPublicKey;
|
|
||||||
+ rv = subjectPublicKeyReader.SkipToEnd(rawPublicKey);
|
|
||||||
+ if (rv != Success) {
|
|
||||||
+ return rv;
|
|
||||||
+ }
|
|
||||||
} else {
|
|
||||||
return Result::ERROR_UNSUPPORTED_KEYALG;
|
|
||||||
}
|
|
||||||
diff --git a/security/nss/lib/mozpkix/lib/pkixder.cpp b/security/nss/lib/mozpkix/lib/pkixder.cpp
|
|
||||||
index 59454c7d3c..4ff45ed566 100644
|
|
||||||
--- a/security/nss/lib/mozpkix/lib/pkixder.cpp
|
|
||||||
+++ b/security/nss/lib/mozpkix/lib/pkixder.cpp
|
|
||||||
@@ -211,6 +211,24 @@ SignatureAlgorithmIdentifierValue(Reader& input,
|
|
||||||
0x00, 0xa2, 0x03, 0x02, 0x01, 0x40
|
|
||||||
};
|
|
||||||
|
|
||||||
+ // Params for pure ML-DSA-44 signature
|
|
||||||
+ // python DottedOIDToCode.py id-ml-dsa-44 2.16.840.1.101.3.4.3.17
|
|
||||||
+ static const uint8_t id_ml_dsa_44[] = {
|
|
||||||
+ 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x11
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ // Params for pure ML-DSA-65 signature
|
|
||||||
+ // python DottedOIDToCode.py id-ml-dsa-65 2.16.840.1.101.3.4.3.18
|
|
||||||
+ static const uint8_t id_ml_dsa_65[] = {
|
|
||||||
+ 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x12
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ // Params for pure ML-DSA-87 signature
|
|
||||||
+ // python DottedOIDToCode.py id-ml-dsa-87 2.16.840.1.101.3.4.3.19
|
|
||||||
+ static const uint8_t id_ml_dsa_87[] = {
|
|
||||||
+ 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x13
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
// Matching is attempted based on a rough estimate of the commonality of the
|
|
||||||
// algorithm, to minimize the number of MatchRest calls.
|
|
||||||
if (algorithmID.MatchRest(sha256WithRSAEncryption)) {
|
|
||||||
@@ -252,6 +270,10 @@ SignatureAlgorithmIdentifierValue(Reader& input,
|
|
||||||
} else {
|
|
||||||
return Result::ERROR_CERT_SIGNATURE_ALGORITHM_DISABLED;
|
|
||||||
}
|
|
||||||
+ } else if (algorithmID.MatchRest(id_ml_dsa_44) ||
|
|
||||||
+ algorithmID.MatchRest(id_ml_dsa_65) ||
|
|
||||||
+ algorithmID.MatchRest(id_ml_dsa_87)) {
|
|
||||||
+ publicKeyAlgorithm = PublicKeyAlgorithm::MLDSA;
|
|
||||||
} else {
|
|
||||||
return Result::ERROR_CERT_SIGNATURE_ALGORITHM_DISABLED;
|
|
||||||
}
|
|
||||||
diff --git a/security/nss/lib/mozpkix/lib/pkixnss.cpp b/security/nss/lib/mozpkix/lib/pkixnss.cpp
|
|
||||||
index 606ef708d8..31aa1ddd67 100644
|
|
||||||
--- a/security/nss/lib/mozpkix/lib/pkixnss.cpp
|
|
||||||
+++ b/security/nss/lib/mozpkix/lib/pkixnss.cpp
|
|
||||||
@@ -303,6 +303,44 @@ DigestBufNSS(Input item,
|
|
||||||
return Success;
|
|
||||||
}
|
|
||||||
|
|
||||||
+Result
|
|
||||||
+VerifyMLDSASignedDataNSS(Input data,
|
|
||||||
+ Input signature,
|
|
||||||
+ Input subjectPublicKeyInfo,
|
|
||||||
+ void* pkcs11PinArg)
|
|
||||||
+{
|
|
||||||
+ ScopedSECKEYPublicKey publicKey;
|
|
||||||
+ SECKEYPublicKey *pubk = NULL;
|
|
||||||
+ SECOidTag signaturePolicyTag, hashPolicyTag;
|
|
||||||
+ Result rv = SubjectPublicKeyInfoToSECKEYPublicKey(subjectPublicKeyInfo,
|
|
||||||
+ publicKey);
|
|
||||||
+ if (rv != Success) {
|
|
||||||
+ return rv;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ pubk = publicKey.get();
|
|
||||||
+ SECItem signatureItem(UnsafeMapInputToSECItem(signature));
|
|
||||||
+ SECItem dataItem(UnsafeMapInputToSECItem(data));
|
|
||||||
+ CK_MECHANISM_TYPE mechanism;
|
|
||||||
+
|
|
||||||
+ switch (pubk->u.mldsa.paramSet) {
|
|
||||||
+ case SEC_OID_ML_DSA_44:
|
|
||||||
+ case SEC_OID_ML_DSA_65:
|
|
||||||
+ case SEC_OID_ML_DSA_87:
|
|
||||||
+ mechanism = CKM_ML_DSA;
|
|
||||||
+ signaturePolicyTag = pubk->u.mldsa.paramSet;
|
|
||||||
+ hashPolicyTag = SEC_OID_UNKNOWN;
|
|
||||||
+ break;
|
|
||||||
+ default:
|
|
||||||
+ return Result::ERROR_UNSUPPORTED_KEYALG;
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ SECOidTag policyTags[2] = {signaturePolicyTag, hashPolicyTag};
|
|
||||||
+ return VerifySignedData(pubk, mechanism, nullptr, &signatureItem,
|
|
||||||
+ &dataItem, policyTags, pkcs11PinArg);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
Result
|
|
||||||
MapPRErrorCodeToResult(PRErrorCode error)
|
|
||||||
{
|
|
||||||
diff --git a/security/nss/lib/mozpkix/lib/pkixverify.cpp b/security/nss/lib/mozpkix/lib/pkixverify.cpp
|
|
||||||
index 8cb58bf7de..ff132d89df 100644
|
|
||||||
--- a/security/nss/lib/mozpkix/lib/pkixverify.cpp
|
|
||||||
+++ b/security/nss/lib/mozpkix/lib/pkixverify.cpp
|
|
||||||
@@ -53,6 +53,9 @@ VerifySignedData(TrustDomain& trustDomain,
|
|
||||||
case der::PublicKeyAlgorithm::RSA_PSS:
|
|
||||||
return trustDomain.VerifyRSAPSSSignedData(signedData.data,
|
|
||||||
digestAlgorithm, signedData.signature, signerSubjectPublicKeyInfo);
|
|
||||||
+ case der::PublicKeyAlgorithm::MLDSA:
|
|
||||||
+ return trustDomain.VerifyMLDSASignedData(signedData.data,
|
|
||||||
+ signedData.signature, signerSubjectPublicKeyInfo);
|
|
||||||
MOZILLA_PKIX_UNREACHABLE_DEFAULT_ENUM
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
diff --git a/config/system-headers.mozbuild b/config/system-headers.mozbuild
|
|
||||||
index 028002a1d0..9dcb50fe5e 100644
|
|
||||||
--- a/config/system-headers.mozbuild
|
|
||||||
+++ b/config/system-headers.mozbuild
|
|
||||||
@@ -310,6 +310,7 @@ system_headers = [
|
|
||||||
"getopt.h",
|
|
||||||
"gio/gdesktopappinfo.h",
|
|
||||||
"gio/gio.h",
|
|
||||||
+ "gio/gunixfdlist.h",
|
|
||||||
"glibconfig.h",
|
|
||||||
"glib.h",
|
|
||||||
"glib-object.h",
|
|
||||||
@ -1,247 +0,0 @@
|
|||||||
diff --git a/netwerk/protocol/http/WebTransportCertificateVerifier.cpp b/netwerk/protocol/http/WebTransportCertificateVerifier.cpp
|
|
||||||
index cc778640a1..298d6a61e8 100644
|
|
||||||
--- a/netwerk/protocol/http/WebTransportCertificateVerifier.cpp
|
|
||||||
+++ b/netwerk/protocol/http/WebTransportCertificateVerifier.cpp
|
|
||||||
@@ -53,6 +53,10 @@ class ServerCertHashesTrustDomain : public mozilla::pkix::TrustDomain {
|
|
||||||
mozilla::pkix::Input signature,
|
|
||||||
mozilla::pkix::Input subjectPublicKeyInfo) override;
|
|
||||||
|
|
||||||
+ virtual mozilla::pkix::Result VerifyMLDSASignedData(
|
|
||||||
+ mozilla::pkix::Input data, mozilla::pkix::Input signature,
|
|
||||||
+ mozilla::pkix::Input subjectPublicKeyInfo) override;
|
|
||||||
+
|
|
||||||
virtual mozilla::pkix::Result DigestBuf(
|
|
||||||
mozilla::pkix::Input item, mozilla::pkix::DigestAlgorithm digestAlg,
|
|
||||||
/*out*/ uint8_t* digestBuf, size_t digestBufLen) override;
|
|
||||||
@@ -151,6 +155,14 @@ mozilla::pkix::Result ServerCertHashesTrustDomain::VerifyECDSASignedData(
|
|
||||||
return mozilla::pkix::Result::FATAL_ERROR_LIBRARY_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
+mozilla::pkix::Result ServerCertHashesTrustDomain::VerifyMLDSASignedData(
|
|
||||||
+ mozilla::pkix::Input data, mozilla::pkix::Input signature,
|
|
||||||
+ mozilla::pkix::Input subjectPublicKeyInfo) {
|
|
||||||
+ MOZ_ASSERT_UNREACHABLE("not expecting this to be called");
|
|
||||||
+
|
|
||||||
+ return mozilla::pkix::Result::FATAL_ERROR_LIBRARY_FAILURE;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
mozilla::pkix::Result ServerCertHashesTrustDomain::DigestBuf(
|
|
||||||
mozilla::pkix::Input item, mozilla::pkix::DigestAlgorithm digestAlg,
|
|
||||||
/*out*/ uint8_t* digestBuf, size_t digestBufLen) {
|
|
||||||
diff --git a/security/certverifier/CertVerifier.cpp b/security/certverifier/CertVerifier.cpp
|
|
||||||
index ca330770fb..1e8f1d4996 100644
|
|
||||||
--- a/security/certverifier/CertVerifier.cpp
|
|
||||||
+++ b/security/certverifier/CertVerifier.cpp
|
|
||||||
@@ -7,6 +7,7 @@
|
|
||||||
#include "CertVerifier.h"
|
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
+#include <optional>
|
|
||||||
|
|
||||||
#include "AppTrustDomain.h"
|
|
||||||
#include "CTKnownLogs.h"
|
|
||||||
@@ -1010,7 +1011,7 @@ Result CertVerifier::VerifySSLServerCert(
|
|
||||||
void HashSignatureParams(pkix::Input data, pkix::Input signature,
|
|
||||||
pkix::Input subjectPublicKeyInfo,
|
|
||||||
pkix::der::PublicKeyAlgorithm publicKeyAlgorithm,
|
|
||||||
- pkix::DigestAlgorithm digestAlgorithm,
|
|
||||||
+ std::optional<pkix::DigestAlgorithm> digestAlgorithm,
|
|
||||||
/*out*/ Maybe<nsTArray<uint8_t>>& sha512Hash) {
|
|
||||||
sha512Hash.reset();
|
|
||||||
Digest digest;
|
|
||||||
@@ -1048,10 +1049,14 @@ void HashSignatureParams(pkix::Input data, pkix::Input signature,
|
|
||||||
sizeof(publicKeyAlgorithm)))) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
- if (NS_FAILED(
|
|
||||||
- digest.Update(reinterpret_cast<const uint8_t*>(&digestAlgorithm),
|
|
||||||
- sizeof(digestAlgorithm)))) {
|
|
||||||
- return;
|
|
||||||
+ // There is no fallback digest algorithm when it's empty.
|
|
||||||
+ // Check that digestAlgorithm actually contains a value.
|
|
||||||
+ if (digestAlgorithm) {
|
|
||||||
+ pkix::DigestAlgorithm value = digestAlgorithm.value();
|
|
||||||
+ if (NS_FAILED(digest.Update(reinterpret_cast<const uint8_t*>(&value),
|
|
||||||
+ sizeof(value)))) {
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
nsTArray<uint8_t> result;
|
|
||||||
if (NS_FAILED(digest.End(result))) {
|
|
||||||
@@ -1064,10 +1069,17 @@ Result VerifySignedDataWithCache(
|
|
||||||
der::PublicKeyAlgorithm publicKeyAlg,
|
|
||||||
mozilla::glean::impl::DenominatorMetric telemetryDenominator,
|
|
||||||
mozilla::glean::impl::NumeratorMetric telemetryNumerator, Input data,
|
|
||||||
- DigestAlgorithm digestAlgorithm, Input signature,
|
|
||||||
+ std::optional<DigestAlgorithm> digestAlgorithm, Input signature,
|
|
||||||
Input subjectPublicKeyInfo, SignatureCache* signatureCache, void* pinArg) {
|
|
||||||
telemetryDenominator.Add(1);
|
|
||||||
Maybe<nsTArray<uint8_t>> sha512Hash;
|
|
||||||
+
|
|
||||||
+ // Currently, it is only acceptable for `digestAlgorithm` to be null when the
|
|
||||||
+ // public key algorithm is pure ML-DSA. Fail immediately otherwise.
|
|
||||||
+ if ((publicKeyAlg != der::PublicKeyAlgorithm::MLDSA) && !digestAlgorithm) {
|
|
||||||
+ return Result::ERROR_INVALID_ALGORITHM;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
HashSignatureParams(data, signature, subjectPublicKeyInfo, publicKeyAlg,
|
|
||||||
digestAlgorithm, sha512Hash);
|
|
||||||
// If hashing the signature parameters succeeded, see if this signature is in
|
|
||||||
@@ -1080,16 +1092,23 @@ Result VerifySignedDataWithCache(
|
|
||||||
Result result;
|
|
||||||
switch (publicKeyAlg) {
|
|
||||||
case der::PublicKeyAlgorithm::ECDSA:
|
|
||||||
- result = VerifyECDSASignedDataNSS(data, digestAlgorithm, signature,
|
|
||||||
- subjectPublicKeyInfo, pinArg);
|
|
||||||
+ result =
|
|
||||||
+ VerifyECDSASignedDataNSS(data, digestAlgorithm.value(), signature,
|
|
||||||
+ subjectPublicKeyInfo, pinArg);
|
|
||||||
break;
|
|
||||||
case der::PublicKeyAlgorithm::RSA_PKCS1:
|
|
||||||
- result = VerifyRSAPKCS1SignedDataNSS(data, digestAlgorithm, signature,
|
|
||||||
- subjectPublicKeyInfo, pinArg);
|
|
||||||
+ result =
|
|
||||||
+ VerifyRSAPKCS1SignedDataNSS(data, digestAlgorithm.value(), signature,
|
|
||||||
+ subjectPublicKeyInfo, pinArg);
|
|
||||||
break;
|
|
||||||
case der::PublicKeyAlgorithm::RSA_PSS:
|
|
||||||
- result = VerifyRSAPSSSignedDataNSS(data, digestAlgorithm, signature,
|
|
||||||
- subjectPublicKeyInfo, pinArg);
|
|
||||||
+ result =
|
|
||||||
+ VerifyRSAPSSSignedDataNSS(data, digestAlgorithm.value(), signature,
|
|
||||||
+ subjectPublicKeyInfo, pinArg);
|
|
||||||
+ break;
|
|
||||||
+ case der::PublicKeyAlgorithm::MLDSA:
|
|
||||||
+ result = VerifyMLDSASignedDataNSS(data, signature, subjectPublicKeyInfo,
|
|
||||||
+ pinArg);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
MOZ_ASSERT_UNREACHABLE("unhandled public key algorithm");
|
|
||||||
diff --git a/security/certverifier/CertVerifier.h b/security/certverifier/CertVerifier.h
|
|
||||||
index 6432547c8a..6e09e6fcdd 100644
|
|
||||||
--- a/security/certverifier/CertVerifier.h
|
|
||||||
+++ b/security/certverifier/CertVerifier.h
|
|
||||||
@@ -331,7 +331,8 @@ mozilla::pkix::Result VerifySignedDataWithCache(
|
|
||||||
mozilla::pkix::der::PublicKeyAlgorithm publicKeyAlg,
|
|
||||||
mozilla::glean::impl::DenominatorMetric telemetryDenominator,
|
|
||||||
mozilla::glean::impl::NumeratorMetric telemetryNumerator,
|
|
||||||
- mozilla::pkix::Input data, mozilla::pkix::DigestAlgorithm digestAlgorithm,
|
|
||||||
+ mozilla::pkix::Input data,
|
|
||||||
+ std::optional<mozilla::pkix::DigestAlgorithm> digestAlgorithm,
|
|
||||||
mozilla::pkix::Input signature, mozilla::pkix::Input subjectPublicKeyInfo,
|
|
||||||
SignatureCache* signatureCache, void* pinArg);
|
|
||||||
|
|
||||||
diff --git a/security/certverifier/NSSCertDBTrustDomain.cpp b/security/certverifier/NSSCertDBTrustDomain.cpp
|
|
||||||
index 70ba17d70f..a3ace3cee7 100644
|
|
||||||
--- a/security/certverifier/NSSCertDBTrustDomain.cpp
|
|
||||||
+++ b/security/certverifier/NSSCertDBTrustDomain.cpp
|
|
||||||
@@ -1541,6 +1541,15 @@ Result NSSCertDBTrustDomain::VerifyECDSASignedData(
|
|
||||||
signature, subjectPublicKeyInfo, mSignatureCache, mPinArg);
|
|
||||||
}
|
|
||||||
|
|
||||||
+Result NSSCertDBTrustDomain::VerifyMLDSASignedData(Input data, Input signature,
|
|
||||||
+ Input subjectPublicKeyInfo) {
|
|
||||||
+ return VerifySignedDataWithCache(
|
|
||||||
+ der::PublicKeyAlgorithm::MLDSA,
|
|
||||||
+ mozilla::glean::cert_signature_cache::total,
|
|
||||||
+ mozilla::glean::cert_signature_cache::hits, data, std::nullopt, signature,
|
|
||||||
+ subjectPublicKeyInfo, mSignatureCache, mPinArg);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
Result NSSCertDBTrustDomain::CheckValidityIsAcceptable(
|
|
||||||
Time notBefore, Time notAfter, EndEntityOrCA endEntityOrCA,
|
|
||||||
KeyPurposeId keyPurpose) {
|
|
||||||
diff --git a/security/certverifier/NSSCertDBTrustDomain.h b/security/certverifier/NSSCertDBTrustDomain.h
|
|
||||||
index fc210f3254..6178201758 100644
|
|
||||||
--- a/security/certverifier/NSSCertDBTrustDomain.h
|
|
||||||
+++ b/security/certverifier/NSSCertDBTrustDomain.h
|
|
||||||
@@ -197,6 +197,10 @@ class NSSCertDBTrustDomain : public mozilla::pkix::TrustDomain {
|
|
||||||
mozilla::pkix::Input signature,
|
|
||||||
mozilla::pkix::Input subjectPublicKeyInfo) override;
|
|
||||||
|
|
||||||
+ virtual Result VerifyMLDSASignedData(
|
|
||||||
+ mozilla::pkix::Input data, mozilla::pkix::Input signature,
|
|
||||||
+ mozilla::pkix::Input subjectPublicKeyInfo) override;
|
|
||||||
+
|
|
||||||
virtual Result DigestBuf(mozilla::pkix::Input item,
|
|
||||||
mozilla::pkix::DigestAlgorithm digestAlg,
|
|
||||||
/*out*/ uint8_t* digestBuf,
|
|
||||||
diff --git a/security/ct/CTLogVerifier.cpp b/security/ct/CTLogVerifier.cpp
|
|
||||||
index d5e665aaca..471213745d 100644
|
|
||||||
--- a/security/ct/CTLogVerifier.cpp
|
|
||||||
+++ b/security/ct/CTLogVerifier.cpp
|
|
||||||
@@ -99,6 +99,10 @@ class SignatureParamsTrustDomain final : public TrustDomain {
|
|
||||||
return pkix::Result::FATAL_ERROR_LIBRARY_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ pkix::Result VerifyMLDSASignedData(Input, Input, Input) override {
|
|
||||||
+ return pkix::Result::FATAL_ERROR_LIBRARY_FAILURE;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
pkix::Result CheckValidityIsAcceptable(Time, Time, EndEntityOrCA,
|
|
||||||
KeyPurposeId) override {
|
|
||||||
return pkix::Result::FATAL_ERROR_LIBRARY_FAILURE;
|
|
||||||
diff --git a/security/ct/tests/gtest/CTTestUtils.cpp b/security/ct/tests/gtest/CTTestUtils.cpp
|
|
||||||
index 6a25307ec3..dbec7adc91 100644
|
|
||||||
--- a/security/ct/tests/gtest/CTTestUtils.cpp
|
|
||||||
+++ b/security/ct/tests/gtest/CTTestUtils.cpp
|
|
||||||
@@ -807,6 +807,12 @@ class OCSPExtensionTrustDomain : public TrustDomain {
|
|
||||||
subjectPublicKeyInfo, nullptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ pkix::Result VerifyMLDSASignedData(Input data, Input signature,
|
|
||||||
+ Input subjectPublicKeyInfo) override {
|
|
||||||
+ return VerifyMLDSASignedDataNSS(data, signature, subjectPublicKeyInfo,
|
|
||||||
+ nullptr);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
pkix::Result CheckValidityIsAcceptable(Time, Time, EndEntityOrCA,
|
|
||||||
KeyPurposeId) override {
|
|
||||||
ADD_FAILURE();
|
|
||||||
diff --git a/security/manager/ssl/AppTrustDomain.cpp b/security/manager/ssl/AppTrustDomain.cpp
|
|
||||||
index ab49d7eb1f..3963f90eb1 100644
|
|
||||||
--- a/security/manager/ssl/AppTrustDomain.cpp
|
|
||||||
+++ b/security/manager/ssl/AppTrustDomain.cpp
|
|
||||||
@@ -322,6 +322,12 @@ pkix::Result AppTrustDomain::VerifyECDSASignedData(
|
|
||||||
subjectPublicKeyInfo, nullptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
+pkix::Result AppTrustDomain::VerifyMLDSASignedData(Input data, Input signature,
|
|
||||||
+ Input subjectPublicKeyInfo) {
|
|
||||||
+ return VerifyMLDSASignedDataNSS(data, signature, subjectPublicKeyInfo,
|
|
||||||
+ nullptr);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
pkix::Result AppTrustDomain::CheckValidityIsAcceptable(
|
|
||||||
Time /*notBefore*/, Time /*notAfter*/, EndEntityOrCA /*endEntityOrCA*/,
|
|
||||||
KeyPurposeId /*keyPurpose*/) {
|
|
||||||
diff --git a/security/manager/ssl/AppTrustDomain.h b/security/manager/ssl/AppTrustDomain.h
|
|
||||||
index 4b0212ede0..85fdff5f13 100644
|
|
||||||
--- a/security/manager/ssl/AppTrustDomain.h
|
|
||||||
+++ b/security/manager/ssl/AppTrustDomain.h
|
|
||||||
@@ -80,6 +80,9 @@ class AppTrustDomain final : public mozilla::pkix::TrustDomain {
|
|
||||||
mozilla::pkix::DigestAlgorithm digestAlg,
|
|
||||||
/*out*/ uint8_t* digestBuf,
|
|
||||||
size_t digestBufLen) override;
|
|
||||||
+ virtual Result VerifyMLDSASignedData(
|
|
||||||
+ mozilla::pkix::Input data, mozilla::pkix::Input signature,
|
|
||||||
+ mozilla::pkix::Input subjectPublicKeyInfo) override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
nsTArray<Span<const uint8_t>> mTrustedRoots;
|
|
||||||
diff --git a/security/manager/ssl/TLSClientAuthCertSelection.cpp b/security/manager/ssl/TLSClientAuthCertSelection.cpp
|
|
||||||
index 3a84b15ee6..a3dc5a1af1 100644
|
|
||||||
--- a/security/manager/ssl/TLSClientAuthCertSelection.cpp
|
|
||||||
+++ b/security/manager/ssl/TLSClientAuthCertSelection.cpp
|
|
||||||
@@ -217,6 +217,11 @@ class ClientAuthCertNonverifyingTrustDomain final : public TrustDomain {
|
|
||||||
pkix::Input subjectPublicKeyInfo) override {
|
|
||||||
return pkix::Success;
|
|
||||||
}
|
|
||||||
+ virtual mozilla::pkix::Result VerifyMLDSASignedData(
|
|
||||||
+ pkix::Input data, pkix::Input signature,
|
|
||||||
+ pkix::Input subjectPublicKeyInfo) override {
|
|
||||||
+ return pkix::Success;
|
|
||||||
+ }
|
|
||||||
virtual mozilla::pkix::Result CheckValidityIsAcceptable(
|
|
||||||
pkix::Time notBefore, pkix::Time notAfter,
|
|
||||||
pkix::EndEntityOrCA endEntityOrCA,
|
|
||||||
@ -1,29 +1,28 @@
|
|||||||
. $topsrcdir/browser/config/mozconfig
|
. $topsrcdir/browser/config/mozconfig
|
||||||
|
|
||||||
ac_add_options --allow-addon-sideload
|
|
||||||
ac_add_options --disable-crashreporter
|
|
||||||
ac_add_options --disable-strip
|
|
||||||
ac_add_options --disable-updater
|
|
||||||
ac_add_options --enable-av1
|
|
||||||
ac_add_options --enable-chrome-format=omni
|
|
||||||
ac_add_options --enable-js-shell
|
|
||||||
ac_add_options --enable-necko-wifi
|
|
||||||
ac_add_options --enable-official-branding
|
|
||||||
ac_add_options --enable-pulseaudio
|
|
||||||
ac_add_options --enable-release
|
|
||||||
ac_add_options --enable-system-ffi
|
|
||||||
ac_add_options --without-system-icu
|
|
||||||
ac_add_options --with-system-jpeg
|
|
||||||
ac_add_options --with-system-zlib
|
ac_add_options --with-system-zlib
|
||||||
|
ac_add_options --disable-strip
|
||||||
|
#ac_add_options --enable-libnotify
|
||||||
|
ac_add_options --enable-necko-wifi
|
||||||
|
ac_add_options --disable-updater
|
||||||
|
ac_add_options --enable-chrome-format=omni
|
||||||
|
ac_add_options --enable-pulseaudio
|
||||||
|
ac_add_options --enable-av1
|
||||||
|
ac_add_options --without-system-icu
|
||||||
|
ac_add_options --enable-release
|
||||||
|
ac_add_options --allow-addon-sideload
|
||||||
|
ac_add_options --with-system-jpeg
|
||||||
|
ac_add_options --enable-js-shell
|
||||||
ac_add_options --with-unsigned-addon-scopes=app,system
|
ac_add_options --with-unsigned-addon-scopes=app,system
|
||||||
|
ac_add_options --without-sysroot
|
||||||
|
# investigate this one:
|
||||||
|
ac_add_options --without-wasm-sandboxed-libraries
|
||||||
|
ac_add_options --disable-crashreporter
|
||||||
export BUILD_OFFICIAL=1
|
export BUILD_OFFICIAL=1
|
||||||
export MOZILLA_OFFICIAL=1
|
export MOZILLA_OFFICIAL=1
|
||||||
|
export MOZ_TELEMETRY_REPORTING=1
|
||||||
export MOZ_UPDATE_CHANNEL=release
|
export MOZ_UPDATE_CHANNEL=release
|
||||||
export MOZ_APP_REMOTINGNAME=firefox
|
export MOZ_APP_REMOTINGNAME=firefox
|
||||||
mk_add_options MOZ_TELEMETRY_REPORTING=
|
|
||||||
mk_add_options MOZ_NORMANDY=
|
|
||||||
mk_add_options MOZ_SERVICES_HEALTHREPORT=
|
|
||||||
mk_add_options BUILD_OFFICIAL=1
|
mk_add_options BUILD_OFFICIAL=1
|
||||||
mk_add_options MOZILLA_OFFICIAL=1
|
mk_add_options MOZILLA_OFFICIAL=1
|
||||||
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir
|
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir
|
||||||
|
|||||||
11
SOURCES/firefox-nss-version.patch
Normal file
11
SOURCES/firefox-nss-version.patch
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
--- firefox-102.6.0/build/moz.configure/nss.configure.firefox-nss-version 2022-12-06 19:14:59.439978420 +0100
|
||||||
|
+++ firefox-102.6.0/build/moz.configure/nss.configure 2022-12-06 19:18:23.299471634 +0100
|
||||||
|
@@ -9,7 +9,7 @@ system_lib_option("--with-system-nss", h
|
||||||
|
imply_option("--with-system-nspr", True, when="--with-system-nss")
|
||||||
|
|
||||||
|
nss_pkg = pkg_check_modules(
|
||||||
|
- "NSS", "nss >= 3.79.2", when="--with-system-nss", config=False
|
||||||
|
+ "NSS", "nss >= 3.79", when="--with-system-nss", config=False
|
||||||
|
)
|
||||||
|
|
||||||
|
set_config("MOZ_SYSTEM_NSS", True, when="--with-system-nss")
|
||||||
@ -1,3 +0,0 @@
|
|||||||
<svg id="Assets" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
||||||
<path d="M190.368 150.591c0.157 0.009 0.079 0.003 0 0zm-57.874-28.933c0.158 0.008 0.079 0.003 0 0zm346.228 44.674c-10.445-25.123-31.6-52.248-48.211-60.82 13.52 26.5 21.345 53.093 24.335 72.935 0 0.04 0.015 0.136 0.047 0.4-27.175-67.732-73.254-95.047-110.886-154.512-1.9-3.008-3.805-6.022-5.661-9.2a73.237 73.237 0 0 1-2.646-4.972 43.757 43.757 0 0 1-3.585-9.5 0.625 0.625 0 0 0-0.546-0.644 0.8 0.8 0 0 0-0.451 0c-0.033 0.011-0.084 0.051-0.119 0.065-0.053 0.02-0.12 0.069-0.176 0.095 0.026-0.036 0.083-0.117 0.1-0.135-53.437 31.3-75.587 86.093-81.282 120.97a128.057 128.057 0 0 0-47.624 12.153 6.144 6.144 0 0 0-3.041 7.63 6.034 6.034 0 0 0 8.192 3.525 116.175 116.175 0 0 1 41.481-10.826c0.468-0.033 0.937-0.062 1.405-0.1a117.624 117.624 0 0 1 5.932-0.211 120.831 120.831 0 0 1 34.491 4.777c0.654 0.192 1.295 0.414 1.946 0.616a120.15 120.15 0 0 1 5.539 1.842 121.852 121.852 0 0 1 3.992 1.564c1.074 0.434 2.148 0.868 3.206 1.331a118.453 118.453 0 0 1 4.9 2.307c0.743 0.368 1.485 0.735 2.217 1.117a120.535 120.535 0 0 1 4.675 2.587 107.785 107.785 0 0 1 2.952 1.776 123.018 123.018 0 0 1 42.028 43.477c-12.833-9.015-35.81-17.918-57.947-14.068 86.441 43.214 63.234 192.027-56.545 186.408a106.7 106.7 0 0 1-31.271-6.031 132.461 132.461 0 0 1-7.059-2.886c-1.356-0.618-2.711-1.243-4.051-1.935-29.349-15.168-53.583-43.833-56.611-78.643 0 0 11.093-41.335 79.433-41.335 7.388 0 28.508-20.614 28.9-26.593-0.09-1.953-41.917-18.59-58.223-34.656-8.714-8.585-12.851-12.723-16.514-15.829a71.7 71.7 0 0 0-6.225-4.7 111.335 111.335 0 0 1-0.675-58.733c-24.687 11.242-43.89 29.011-57.849 44.7h-0.111c-9.528-12.067-8.855-51.873-8.312-60.184-0.114-0.516-7.107 3.63-8.024 4.254a175.21 175.21 0 0 0-23.486 20.12 210.5 210.5 0 0 0-22.443 26.913c0 0.012-0.007 0.025-0.011 0.037 0-0.012 0.007-0.025 0.011-0.038a202.837 202.837 0 0 0-32.244 72.81c-0.058 0.265-2.29 10.054-3.92 22.147a265.794 265.794 0 0 0-0.769 5.651c-0.558 3.636-0.992 7.6-1.42 13.767-0.019 0.239-0.031 0.474-0.048 0.712a591.152 591.152 0 0 0-0.481 7.995c0 0.411-0.025 0.816-0.025 1.227 0 132.709 107.6 240.29 240.324 240.29 118.865 0 217.559-86.288 236.882-199.63 0.407-3.075 0.732-6.168 1.092-9.27 4.777-41.21-0.53-84.525-15.588-120.747zm-164.068 72.1z" fill="#fff"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 2.2 KiB |
14
SOURCES/firefox-tests-xpcshell-freeze.patch
Normal file
14
SOURCES/firefox-tests-xpcshell-freeze.patch
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
diff -up firefox-88.0/testing/xpcshell/runxpcshelltests.py.old firefox-88.0/testing/xpcshell/runxpcshelltests.py
|
||||||
|
--- firefox-88.0/testing/xpcshell/runxpcshelltests.py.old 2021-04-30 10:45:14.466616224 +0200
|
||||||
|
+++ firefox-88.0/testing/xpcshell/runxpcshelltests.py 2021-04-30 10:45:21.339525085 +0200
|
||||||
|
@@ -1382,8 +1382,8 @@ class XPCShellTests(object):
|
||||||
|
self.log.info("Process %s" % label)
|
||||||
|
self.log.info(msg)
|
||||||
|
|
||||||
|
- dumpOutput(proc.stdout, "stdout")
|
||||||
|
- dumpOutput(proc.stderr, "stderr")
|
||||||
|
+ #dumpOutput(proc.stdout, "stdout")
|
||||||
|
+ #dumpOutput(proc.stderr, "stderr")
|
||||||
|
self.nodeProc = {}
|
||||||
|
|
||||||
|
def startHttp3Server(self):
|
||||||
@ -64,6 +64,7 @@ MOZ_DIST_BIN="$MOZ_LIB_DIR/firefox"
|
|||||||
MOZ_LANGPACKS_DIR="$MOZ_DIST_BIN/langpacks"
|
MOZ_LANGPACKS_DIR="$MOZ_DIST_BIN/langpacks"
|
||||||
MOZ_EXTENSIONS_PROFILE_DIR="$HOME/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
|
MOZ_EXTENSIONS_PROFILE_DIR="$HOME/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
|
||||||
MOZ_PROGRAM="$MOZ_DIST_BIN/$MOZ_FIREFOX_FILE"
|
MOZ_PROGRAM="$MOZ_DIST_BIN/$MOZ_FIREFOX_FILE"
|
||||||
|
MOZ_LAUNCHER="$MOZ_DIST_BIN/run-mozilla.sh"
|
||||||
GETENFORCE_FILE="/usr/sbin/getenforce"
|
GETENFORCE_FILE="/usr/sbin/getenforce"
|
||||||
|
|
||||||
##
|
##
|
||||||
@ -194,8 +195,8 @@ fi
|
|||||||
# When Firefox is not running, restore SELinux labels for profile files
|
# When Firefox is not running, restore SELinux labels for profile files
|
||||||
# (rhbz#1731371)
|
# (rhbz#1731371)
|
||||||
if [ $MOZILLA_DOWN -ne 0 ]; then
|
if [ $MOZILLA_DOWN -ne 0 ]; then
|
||||||
if [ -x $GETENFORCE_FILE ] && [ `$GETENFORCE_FILE` != "Disabled" ] && [ -d ~/.mozilla/firefox ]; then
|
if [ -x $GETENFORCE_FILE ] && [ `getenforce` != "Disabled" ]; then
|
||||||
(/usr/sbin/restorecon -vr ~/.mozilla/firefox &)
|
(restorecon -vr ~/.mozilla/firefox/* &)
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -246,6 +247,35 @@ fi
|
|||||||
NSS_SSL_CBC_RANDOM_IV=${NSS_SSL_CBC_RANDOM_IV-1}
|
NSS_SSL_CBC_RANDOM_IV=${NSS_SSL_CBC_RANDOM_IV-1}
|
||||||
export NSS_SSL_CBC_RANDOM_IV
|
export NSS_SSL_CBC_RANDOM_IV
|
||||||
|
|
||||||
|
# Prepare command line arguments
|
||||||
|
script_args=""
|
||||||
|
pass_arg_count=0
|
||||||
|
while [ $# -gt $pass_arg_count ]
|
||||||
|
do
|
||||||
|
case "$1" in
|
||||||
|
-g | --debug)
|
||||||
|
script_args="$script_args -g"
|
||||||
|
debugging=1
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-d | --debugger)
|
||||||
|
if [ $# -gt 1 ]; then
|
||||||
|
script_args="$script_args -d $2"
|
||||||
|
shift 2
|
||||||
|
else
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# Move the unrecognized argument to the end of the list.
|
||||||
|
arg="$1"
|
||||||
|
shift
|
||||||
|
set -- "$@" "$arg"
|
||||||
|
pass_arg_count=`expr $pass_arg_count + 1`
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
# Flatpak specific environment variables
|
# Flatpak specific environment variables
|
||||||
%FLATPAK_ENV_VARS%
|
%FLATPAK_ENV_VARS%
|
||||||
|
|
||||||
@ -256,7 +286,7 @@ export MOZ_ALLOW_DOWNGRADE=1
|
|||||||
debugging=0
|
debugging=0
|
||||||
if [ $debugging = 1 ]
|
if [ $debugging = 1 ]
|
||||||
then
|
then
|
||||||
echo $MOZ_PROGRAM "$@"
|
echo $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec $MOZ_PROGRAM "$@"
|
exec $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@"
|
||||||
|
|||||||
33248
SOURCES/libwebrtc-screen-cast-sync.patch
Normal file
33248
SOURCES/libwebrtc-screen-cast-sync.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
|||||||
diff -up firefox-140.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.mozilla-bmo1170092 firefox-140.0/extensions/pref/autoconfig/src/nsReadConfig.cpp
|
diff -up firefox-87.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 firefox-87.0/extensions/pref/autoconfig/src/nsReadConfig.cpp
|
||||||
--- firefox-140.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.mozilla-bmo1170092 2025-06-02 15:26:44.000000000 +0200
|
--- firefox-87.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 2021-03-18 14:48:36.000000000 +0100
|
||||||
+++ firefox-140.0/extensions/pref/autoconfig/src/nsReadConfig.cpp 2025-06-04 13:24:00.344728697 +0200
|
+++ firefox-87.0/extensions/pref/autoconfig/src/nsReadConfig.cpp 2021-03-22 19:20:02.429310184 +0100
|
||||||
@@ -263,8 +263,20 @@ nsresult nsReadConfig::openAndEvaluateJS
|
@@ -249,8 +249,20 @@ nsresult nsReadConfig::openAndEvaluateJS
|
||||||
if (NS_FAILED(rv)) return rv;
|
if (NS_FAILED(rv)) return rv;
|
||||||
|
|
||||||
rv = NS_NewLocalFileInputStream(getter_AddRefs(inStr), jsFile);
|
rv = NS_NewLocalFileInputStream(getter_AddRefs(inStr), jsFile);
|
||||||
@ -23,10 +23,10 @@ diff -up firefox-140.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.mozilla-b
|
|||||||
} else {
|
} else {
|
||||||
nsAutoCString location("resource://gre/defaults/autoconfig/");
|
nsAutoCString location("resource://gre/defaults/autoconfig/");
|
||||||
location += aFileName;
|
location += aFileName;
|
||||||
diff -up firefox-140.0/modules/libpref/Preferences.cpp.mozilla-bmo1170092 firefox-140.0/modules/libpref/Preferences.cpp
|
diff -up firefox-87.0/modules/libpref/Preferences.cpp.1170092 firefox-87.0/modules/libpref/Preferences.cpp
|
||||||
--- firefox-140.0/modules/libpref/Preferences.cpp.mozilla-bmo1170092 2025-06-02 15:26:51.000000000 +0200
|
--- firefox-87.0/modules/libpref/Preferences.cpp.1170092 2021-03-18 14:48:54.000000000 +0100
|
||||||
+++ firefox-140.0/modules/libpref/Preferences.cpp 2025-06-04 13:24:00.345430064 +0200
|
+++ firefox-87.0/modules/libpref/Preferences.cpp 2021-03-22 19:20:02.429310184 +0100
|
||||||
@@ -4914,6 +4914,9 @@ nsresult Preferences::InitInitialObjects
|
@@ -4499,6 +4499,9 @@ nsresult Preferences::InitInitialObjects
|
||||||
//
|
//
|
||||||
// Thus, in the omni.jar case, we always load app-specific default
|
// Thus, in the omni.jar case, we always load app-specific default
|
||||||
// preferences from omni.jar, whether or not `$app == $gre`.
|
// preferences from omni.jar, whether or not `$app == $gre`.
|
||||||
@ -36,10 +36,10 @@ diff -up firefox-140.0/modules/libpref/Preferences.cpp.mozilla-bmo1170092 firefo
|
|||||||
|
|
||||||
nsresult rv = NS_ERROR_FAILURE;
|
nsresult rv = NS_ERROR_FAILURE;
|
||||||
UniquePtr<nsZipFind> find;
|
UniquePtr<nsZipFind> find;
|
||||||
diff -up firefox-140.0/toolkit/xre/nsXREDirProvider.cpp.mozilla-bmo1170092 firefox-140.0/toolkit/xre/nsXREDirProvider.cpp
|
diff -up firefox-87.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-87.0/toolkit/xre/nsXREDirProvider.cpp
|
||||||
--- firefox-140.0/toolkit/xre/nsXREDirProvider.cpp.mozilla-bmo1170092 2025-06-02 15:27:00.000000000 +0200
|
--- firefox-87.0/toolkit/xre/nsXREDirProvider.cpp.1170092 2021-03-18 14:52:00.000000000 +0100
|
||||||
+++ firefox-140.0/toolkit/xre/nsXREDirProvider.cpp 2025-06-04 15:44:09.413562326 +0200
|
+++ firefox-87.0/toolkit/xre/nsXREDirProvider.cpp 2021-03-22 19:37:56.574480347 +0100
|
||||||
@@ -76,6 +76,7 @@
|
@@ -65,6 +65,7 @@
|
||||||
#endif
|
#endif
|
||||||
#ifdef XP_UNIX
|
#ifdef XP_UNIX
|
||||||
# include <ctype.h>
|
# include <ctype.h>
|
||||||
@ -47,11 +47,13 @@ diff -up firefox-140.0/toolkit/xre/nsXREDirProvider.cpp.mozilla-bmo1170092 firef
|
|||||||
#endif
|
#endif
|
||||||
#ifdef XP_IOS
|
#ifdef XP_IOS
|
||||||
# include "UIKitDirProvider.h"
|
# include "UIKitDirProvider.h"
|
||||||
@@ -462,6 +463,17 @@ nsXREDirProvider::GetFile(const char* aP
|
@@ -552,6 +553,21 @@ nsXREDirProvider::GetFile(const char* aP
|
||||||
rv = file->AppendNative(nsLiteralCString(PREF_OVERRIDE_DIRNAME));
|
}
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
}
|
||||||
rv = EnsureDirectoryExists(file);
|
}
|
||||||
+ } else if (!strcmp(aProperty, NS_APP_PREFS_SYSTEM_CONFIG_DIR)) {
|
+
|
||||||
|
+#if defined(XP_UNIX)
|
||||||
|
+ if (!strcmp(aProperty, NS_APP_PREFS_SYSTEM_CONFIG_DIR)) {
|
||||||
+ nsCString sysConfigDir = nsLiteralCString("/etc/");
|
+ nsCString sysConfigDir = nsLiteralCString("/etc/");
|
||||||
+ nsCOMPtr<nsIXULAppInfo> appInfo = do_GetService("@mozilla.org/xre/app-info;1");
|
+ nsCOMPtr<nsIXULAppInfo> appInfo = do_GetService("@mozilla.org/xre/app-info;1");
|
||||||
+ if (!appInfo)
|
+ if (!appInfo)
|
||||||
@ -60,12 +62,14 @@ diff -up firefox-140.0/toolkit/xre/nsXREDirProvider.cpp.mozilla-bmo1170092 firef
|
|||||||
+ appInfo->GetName(appName);
|
+ appInfo->GetName(appName);
|
||||||
+ ToLowerCase(appName);
|
+ ToLowerCase(appName);
|
||||||
+ sysConfigDir.Append(appName);
|
+ sysConfigDir.Append(appName);
|
||||||
+ NS_NewNativeLocalFile(sysConfigDir, getter_AddRefs(file));
|
+ return NS_NewNativeLocalFile(sysConfigDir, false, aFile);
|
||||||
+ rv = EnsureDirectoryExists(file);
|
+ }
|
||||||
} else {
|
+#endif
|
||||||
// We don't know anything about this property. Fail without warning, because
|
+
|
||||||
// otherwise we'll get too much warning spam due to
|
if (NS_FAILED(rv) || !file) return NS_ERROR_FAILURE;
|
||||||
@@ -518,6 +530,16 @@ nsXREDirProvider::GetFiles(const char* a
|
|
||||||
|
if (ensureFilePermissions) {
|
||||||
|
@@ -874,6 +890,16 @@ nsresult nsXREDirProvider::GetFilesInter
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -82,10 +86,10 @@ diff -up firefox-140.0/toolkit/xre/nsXREDirProvider.cpp.mozilla-bmo1170092 firef
|
|||||||
rv = NS_NewArrayEnumerator(aResult, directories, NS_GET_IID(nsIFile));
|
rv = NS_NewArrayEnumerator(aResult, directories, NS_GET_IID(nsIFile));
|
||||||
} else if (!strcmp(aProperty, NS_APP_CHROME_DIR_LIST)) {
|
} else if (!strcmp(aProperty, NS_APP_CHROME_DIR_LIST)) {
|
||||||
// NS_APP_CHROME_DIR_LIST is only used to get default (native) icons
|
// NS_APP_CHROME_DIR_LIST is only used to get default (native) icons
|
||||||
diff -up firefox-140.0/xpcom/io/nsAppDirectoryServiceDefs.h.mozilla-bmo1170092 firefox-140.0/xpcom/io/nsAppDirectoryServiceDefs.h
|
diff -up firefox-87.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 firefox-87.0/xpcom/io/nsAppDirectoryServiceDefs.h
|
||||||
--- firefox-140.0/xpcom/io/nsAppDirectoryServiceDefs.h.mozilla-bmo1170092 2025-06-02 15:27:01.000000000 +0200
|
--- firefox-87.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 2021-03-18 14:51:58.000000000 +0100
|
||||||
+++ firefox-140.0/xpcom/io/nsAppDirectoryServiceDefs.h 2025-06-04 13:24:00.346423861 +0200
|
+++ firefox-87.0/xpcom/io/nsAppDirectoryServiceDefs.h 2021-03-22 19:20:02.430310213 +0100
|
||||||
@@ -58,6 +58,7 @@
|
@@ -59,6 +59,7 @@
|
||||||
#define NS_APP_PREFS_DEFAULTS_DIR_LIST "PrefDL"
|
#define NS_APP_PREFS_DEFAULTS_DIR_LIST "PrefDL"
|
||||||
#define NS_APP_PREFS_OVERRIDE_DIR \
|
#define NS_APP_PREFS_OVERRIDE_DIR \
|
||||||
"PrefDOverride" // Directory for per-profile defaults
|
"PrefDOverride" // Directory for per-profile defaults
|
||||||
15
SOURCES/mozilla-1516803.patch
Normal file
15
SOURCES/mozilla-1516803.patch
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
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()
|
||||||
14
SOURCES/mozilla-1669639.patch
Normal file
14
SOURCES/mozilla-1669639.patch
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
--- firefox-81.0.1/build/mach_initialize.py.old 2020-10-06 14:16:06.212974910 +0200
|
||||||
|
+++ firefox-81.0.1/build/mach_initialize.py 2020-10-06 14:19:03.313179557 +0200
|
||||||
|
@@ -507,7 +507,10 @@ class ImportHook(object):
|
||||||
|
# doesn't happen or because it doesn't matter).
|
||||||
|
if not os.path.exists(module.__file__[:-1]):
|
||||||
|
if os.path.exists(module.__file__):
|
||||||
|
- os.remove(module.__file__)
|
||||||
|
+ try:
|
||||||
|
+ os.remove(module.__file__)
|
||||||
|
+ except:
|
||||||
|
+ pass
|
||||||
|
del sys.modules[module.__name__]
|
||||||
|
module = self(name, globals, locals, fromlist, level)
|
||||||
|
|
||||||
68
SOURCES/mozilla-1670333.patch
Normal file
68
SOURCES/mozilla-1670333.patch
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
diff -up firefox-99.0/dom/media/mp4/MP4Demuxer.cpp.1670333 firefox-99.0/dom/media/mp4/MP4Demuxer.cpp
|
||||||
|
--- firefox-99.0/dom/media/mp4/MP4Demuxer.cpp.1670333 2022-03-31 01:24:44.000000000 +0200
|
||||||
|
+++ firefox-99.0/dom/media/mp4/MP4Demuxer.cpp 2022-04-04 09:58:35.606351546 +0200
|
||||||
|
@@ -31,6 +31,8 @@ mozilla::LogModule* GetDemuxerLog() { re
|
||||||
|
DDMOZ_LOG(gMediaDemuxerLog, mozilla::LogLevel::Debug, "::%s: " arg, \
|
||||||
|
__func__, ##__VA_ARGS__)
|
||||||
|
|
||||||
|
+extern bool gUseKeyframeFromContainer;
|
||||||
|
+
|
||||||
|
namespace mozilla {
|
||||||
|
|
||||||
|
DDLoggedTypeDeclNameAndBase(MP4TrackDemuxer, MediaTrackDemuxer);
|
||||||
|
@@ -394,6 +396,12 @@ already_AddRefed<MediaRawData> MP4TrackD
|
||||||
|
[[fallthrough]];
|
||||||
|
case H264::FrameType::OTHER: {
|
||||||
|
bool keyframe = type == H264::FrameType::I_FRAME;
|
||||||
|
+ if (gUseKeyframeFromContainer) {
|
||||||
|
+ if (sample->mKeyframe && sample->mKeyframe != keyframe) {
|
||||||
|
+ sample->mKeyframe = keyframe;
|
||||||
|
+ }
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
if (sample->mKeyframe != keyframe) {
|
||||||
|
NS_WARNING(nsPrintfCString("Frame incorrectly marked as %skeyframe "
|
||||||
|
"@ pts:%" PRId64 " dur:%" PRId64
|
||||||
|
diff -up firefox-99.0/dom/media/platforms/PDMFactory.cpp.1670333 firefox-99.0/dom/media/platforms/PDMFactory.cpp
|
||||||
|
--- firefox-99.0/dom/media/platforms/PDMFactory.cpp.1670333 2022-03-31 01:24:44.000000000 +0200
|
||||||
|
+++ firefox-99.0/dom/media/platforms/PDMFactory.cpp 2022-04-04 10:09:57.383419125 +0200
|
||||||
|
@@ -58,6 +58,8 @@
|
||||||
|
|
||||||
|
#include <functional>
|
||||||
|
|
||||||
|
+bool gUseKeyframeFromContainer = false;
|
||||||
|
+
|
||||||
|
namespace mozilla {
|
||||||
|
|
||||||
|
#define PDM_INIT_LOG(msg, ...) \
|
||||||
|
@@ -495,7 +497,7 @@ void PDMFactory::CreateRddPDMs() {
|
||||||
|
#ifdef MOZ_FFMPEG
|
||||||
|
if (StaticPrefs::media_ffmpeg_enabled() &&
|
||||||
|
StaticPrefs::media_rdd_ffmpeg_enabled() &&
|
||||||
|
- !CreateAndStartupPDM<FFmpegRuntimeLinker>()) {
|
||||||
|
+ !(mFFmpegUsed = CreateAndStartupPDM<FFmpegRuntimeLinker>())) {
|
||||||
|
mFailureFlags += GetFailureFlagBasedOnFFmpegStatus(
|
||||||
|
FFmpegRuntimeLinker::LinkStatusCode());
|
||||||
|
}
|
||||||
|
@@ -602,8 +604,9 @@ void PDMFactory::CreateDefaultPDMs() {
|
||||||
|
|
||||||
|
CreateAndStartupPDM<AgnosticDecoderModule>();
|
||||||
|
|
||||||
|
- if (StaticPrefs::media_gmp_decoder_enabled() &&
|
||||||
|
+ if (StaticPrefs::media_gmp_decoder_enabled() && !mFFmpegUsed &&
|
||||||
|
!CreateAndStartupPDM<GMPDecoderModule>()) {
|
||||||
|
+ gUseKeyframeFromContainer = true;
|
||||||
|
mFailureFlags += DecoderDoctorDiagnostics::Flags::GMPPDMFailedToStartup;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff -up firefox-99.0/dom/media/platforms/PDMFactory.h.1670333 firefox-99.0/dom/media/platforms/PDMFactory.h
|
||||||
|
--- firefox-99.0/dom/media/platforms/PDMFactory.h.1670333 2022-03-31 01:24:44.000000000 +0200
|
||||||
|
+++ firefox-99.0/dom/media/platforms/PDMFactory.h 2022-04-04 09:58:35.606351546 +0200
|
||||||
|
@@ -121,6 +121,7 @@ class PDMFactory final {
|
||||||
|
RefPtr<PlatformDecoderModule> mNullPDM;
|
||||||
|
|
||||||
|
DecoderDoctorDiagnostics::FlagsSet mFailureFlags;
|
||||||
|
+ bool mFFmpegUsed = false;
|
||||||
|
|
||||||
|
friend class RemoteVideoDecoderParent;
|
||||||
|
static void EnsureInit();
|
||||||
17
SOURCES/mozilla-1775202.patch
Normal file
17
SOURCES/mozilla-1775202.patch
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
diff --git a/third_party/libwebrtc/moz.build b/third_party/libwebrtc/moz.build
|
||||||
|
index 8579f8bb3622..d9ca79d4fcb8 100644
|
||||||
|
--- a/third_party/libwebrtc/moz.build
|
||||||
|
+++ b/third_party/libwebrtc/moz.build
|
||||||
|
@@ -520,7 +520,10 @@ if CONFIG["CPU_ARCH"] == "ppc64" and CONFIG["OS_TARGET"] == "Linux":
|
||||||
|
"/third_party/libwebrtc/api/audio_codecs/isac/audio_decoder_isac_float_gn",
|
||||||
|
"/third_party/libwebrtc/api/audio_codecs/isac/audio_encoder_isac_float_gn",
|
||||||
|
"/third_party/libwebrtc/modules/audio_coding/isac_c_gn",
|
||||||
|
- "/third_party/libwebrtc/modules/audio_coding/isac_gn"
|
||||||
|
+ "/third_party/libwebrtc/modules/audio_coding/isac_gn",
|
||||||
|
+ "/third_party/libwebrtc/modules/desktop_capture/desktop_capture_generic_gn",
|
||||||
|
+ "/third_party/libwebrtc/modules/desktop_capture/desktop_capture_gn",
|
||||||
|
+ "/third_party/libwebrtc/modules/desktop_capture/primitives_gn"
|
||||||
|
]
|
||||||
|
|
||||||
|
if CONFIG["CPU_ARCH"] == "x86" and CONFIG["OS_TARGET"] == "Linux":
|
||||||
|
|
||||||
30
SOURCES/mozilla-bmo1005535.patch
Normal file
30
SOURCES/mozilla-bmo1005535.patch
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# User Steve Singer <steve@ssinger.info>
|
||||||
|
# Date 1558451540 -7200
|
||||||
|
# Tue May 21 17:12:20 2019 +0200
|
||||||
|
# Node ID 433beec63e6b5f409683af20a0c1ab137cc7bfad
|
||||||
|
# Parent c0fdccc716e80a6d289c94f5d507ae141c62a3bf
|
||||||
|
Bug 1005535 - Get skia GPU building on big endian.
|
||||||
|
|
||||||
|
diff --git a/gfx/skia/skia/src/gpu/GrColor.h b/gfx/skia/skia/src/gpu/GrColor.h
|
||||||
|
--- a/gfx/skia/skia/src/gpu/GrColor.h
|
||||||
|
+++ b/gfx/skia/skia/src/gpu/GrColor.h
|
||||||
|
@@ -59,17 +59,17 @@ static inline GrColor GrColorPackRGBA(un
|
||||||
|
#define GrColorUnpackG(color) (((color) >> GrColor_SHIFT_G) & 0xFF)
|
||||||
|
#define GrColorUnpackB(color) (((color) >> GrColor_SHIFT_B) & 0xFF)
|
||||||
|
#define GrColorUnpackA(color) (((color) >> GrColor_SHIFT_A) & 0xFF)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Since premultiplied means that alpha >= color, we construct a color with
|
||||||
|
* each component==255 and alpha == 0 to be "illegal"
|
||||||
|
*/
|
||||||
|
-#define GrColor_ILLEGAL (~(0xFF << GrColor_SHIFT_A))
|
||||||
|
+#define GrColor_ILLEGAL ((uint32_t)(~(0xFF << GrColor_SHIFT_A)))
|
||||||
|
|
||||||
|
/** Normalizes and coverts an uint8_t to a float. [0, 255] -> [0.0, 1.0] */
|
||||||
|
static inline float GrNormalizeByteToFloat(uint8_t value) {
|
||||||
|
static const float ONE_OVER_255 = 1.f / 255.f;
|
||||||
|
return value * ONE_OVER_255;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Used to pick vertex attribute types. */
|
||||||
@ -1,31 +1,43 @@
|
|||||||
diff -up firefox-128.0/gfx/2d/DrawTargetSkia.cpp.mozilla-bmo1504834-part1 firefox-128.0/gfx/2d/DrawTargetSkia.cpp
|
# HG changeset patch
|
||||||
--- firefox-128.0/gfx/2d/DrawTargetSkia.cpp.mozilla-bmo1504834-part1 2024-06-12 15:02:55.000000000 +0200
|
# Parent b5471d23321d16a0bacc25b7afd27d2e16adba1a
|
||||||
+++ firefox-128.0/gfx/2d/DrawTargetSkia.cpp 2024-06-13 11:36:54.550728034 +0200
|
Taken from https://bugzilla.mozilla.org/show_bug.cgi?id=1504834
|
||||||
@@ -156,8 +156,8 @@ static IntRect CalculateSurfaceBounds(co
|
|
||||||
|
diff --git a/gfx/2d/DrawTargetSkia.cpp b/gfx/2d/DrawTargetSkia.cpp
|
||||||
|
--- a/gfx/2d/DrawTargetSkia.cpp
|
||||||
|
+++ b/gfx/2d/DrawTargetSkia.cpp
|
||||||
|
@@ -130,18 +130,17 @@ static IntRect CalculateSurfaceBounds(co
|
||||||
|
Rect sampledBounds = inverse.TransformBounds(*aBounds);
|
||||||
|
if (!sampledBounds.ToIntRect(&bounds)) {
|
||||||
|
return surfaceBounds;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const int kARGBAlphaOffset =
|
return surfaceBounds.Intersect(bounds);
|
||||||
|
}
|
||||||
|
|
||||||
|
-static const int kARGBAlphaOffset =
|
||||||
- SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0;
|
- SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0;
|
||||||
-
|
+static const int kARGBAlphaOffset = 0; // Skia is always BGRA SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0;
|
||||||
+ 0; // Skia is always BGRA SurfaceFormat::A8R8G8B8_UINT32 ==
|
|
||||||
+ // SurfaceFormat::B8G8R8A8 ? 3 : 0;
|
|
||||||
static bool VerifyRGBXFormat(uint8_t* aData, const IntSize& aSize,
|
static bool VerifyRGBXFormat(uint8_t* aData, const IntSize& aSize,
|
||||||
const int32_t aStride, SurfaceFormat aFormat) {
|
const int32_t aStride, SurfaceFormat aFormat) {
|
||||||
if (aFormat != SurfaceFormat::B8G8R8X8 || aSize.IsEmpty()) {
|
if (aFormat != SurfaceFormat::B8G8R8X8 || aSize.IsEmpty()) {
|
||||||
diff -up firefox-128.0/gfx/2d/Types.h.mozilla-bmo1504834-part1 firefox-128.0/gfx/2d/Types.h
|
return true;
|
||||||
--- firefox-128.0/gfx/2d/Types.h.mozilla-bmo1504834-part1 2024-06-12 15:02:56.000000000 +0200
|
}
|
||||||
+++ firefox-128.0/gfx/2d/Types.h 2024-06-13 11:36:54.551728036 +0200
|
// We should've initialized the data to be opaque already
|
||||||
@@ -89,18 +89,11 @@ enum class SurfaceFormat : int8_t {
|
// On debug builds, verify that this is actually true.
|
||||||
// This represents the unknown format.
|
diff --git a/gfx/2d/Types.h b/gfx/2d/Types.h
|
||||||
UNKNOWN, // TODO: Replace uses with Maybe<SurfaceFormat>.
|
--- a/gfx/2d/Types.h
|
||||||
|
+++ b/gfx/2d/Types.h
|
||||||
|
@@ -84,25 +84,18 @@ enum class SurfaceFormat : int8_t {
|
||||||
|
Depth,
|
||||||
|
|
||||||
-// The following values are endian-independent synonyms. The _UINT32 suffix
|
// This represents the unknown format.
|
||||||
-// indicates that the name reflects the layout when viewed as a uint32_t
|
UNKNOWN,
|
||||||
-// value.
|
|
||||||
|
// The following values are endian-independent synonyms. The _UINT32 suffix
|
||||||
|
// indicates that the name reflects the layout when viewed as a uint32_t
|
||||||
|
// value.
|
||||||
-#if MOZ_LITTLE_ENDIAN()
|
-#if MOZ_LITTLE_ENDIAN()
|
||||||
+ // The following values are endian-independent synonyms. The _UINT32 suffix
|
|
||||||
+ // indicates that the name reflects the layout when viewed as a uint32_t
|
|
||||||
+ // value.
|
|
||||||
A8R8G8B8_UINT32 = B8G8R8A8, // 0xAARRGGBB
|
A8R8G8B8_UINT32 = B8G8R8A8, // 0xAARRGGBB
|
||||||
X8R8G8B8_UINT32 = B8G8R8X8, // 0x00RRGGBB
|
X8R8G8B8_UINT32 = B8G8R8X8, // 0x00RRGGBB
|
||||||
-#elif MOZ_BIG_ENDIAN()
|
-#elif MOZ_BIG_ENDIAN()
|
||||||
@ -37,10 +49,20 @@ diff -up firefox-128.0/gfx/2d/Types.h.mozilla-bmo1504834-part1 firefox-128.0/gfx
|
|||||||
|
|
||||||
// The following values are OS and endian-independent synonyms.
|
// The following values are OS and endian-independent synonyms.
|
||||||
//
|
//
|
||||||
diff -up firefox-128.0/gfx/skia/skia/modules/skcms/skcms.cc.mozilla-bmo1504834-part1 firefox-128.0/gfx/skia/skia/modules/skcms/skcms.cc
|
// TODO(aosmond): When everything blocking bug 1581828 has been resolved, we
|
||||||
--- firefox-128.0/gfx/skia/skia/modules/skcms/skcms.cc.mozilla-bmo1504834-part1 2024-06-12 15:02:57.000000000 +0200
|
// can make this use R8B8G8A8 and R8B8G8X8 for non-Windows platforms.
|
||||||
+++ firefox-128.0/gfx/skia/skia/modules/skcms/skcms.cc 2024-06-13 11:38:45.377835856 +0200
|
OS_RGBA = A8R8G8B8_UINT32,
|
||||||
@@ -31,6 +31,8 @@
|
OS_RGBX = X8R8G8B8_UINT32
|
||||||
|
};
|
||||||
|
diff --git a/gfx/skia/skia/third_party/skcms/skcms.cc b/gfx/skia/skia/third_party/skcms/skcms.cc
|
||||||
|
--- a/gfx/skia/skia/third_party/skcms/skcms.cc
|
||||||
|
+++ b/gfx/skia/skia/third_party/skcms/skcms.cc
|
||||||
|
@@ -25,16 +25,18 @@
|
||||||
|
// it'd be a lot slower. But we want all those headers included so we
|
||||||
|
// can use their features after runtime checks later.
|
||||||
|
#include <smmintrin.h>
|
||||||
|
#include <avxintrin.h>
|
||||||
|
#include <avx2intrin.h>
|
||||||
#include <avx512fintrin.h>
|
#include <avx512fintrin.h>
|
||||||
#include <avx512dqintrin.h>
|
#include <avx512dqintrin.h>
|
||||||
#endif
|
#endif
|
||||||
@ -48,21 +70,30 @@ diff -up firefox-128.0/gfx/skia/skia/modules/skcms/skcms.cc.mozilla-bmo1504834-p
|
|||||||
+ #define SKCMS_PORTABLE
|
+ #define SKCMS_PORTABLE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
using namespace skcms_private;
|
// sizeof(x) will return size_t, which is 32-bit on some machines and 64-bit on others.
|
||||||
@@ -324,20 +326,28 @@ enum {
|
// We have better testing on 64-bit machines, so force 32-bit machines to behave like 64-bit.
|
||||||
|
//
|
||||||
|
// Please do not use sizeof() directly, and size_t only when required.
|
||||||
|
// (We have no way of enforcing these requests...)
|
||||||
|
#define SAFE_SIZEOF(x) ((uint64_t)sizeof(x))
|
||||||
|
@@ -275,30 +277,38 @@ enum {
|
||||||
|
skcms_Signature_sf32 = 0x73663332,
|
||||||
|
// XYZ is also a PCS signature, so it's defined in skcms.h
|
||||||
|
// skcms_Signature_XYZ = 0x58595A20,
|
||||||
|
};
|
||||||
|
|
||||||
static uint16_t read_big_u16(const uint8_t* ptr) {
|
static uint16_t read_big_u16(const uint8_t* ptr) {
|
||||||
uint16_t be;
|
uint16_t be;
|
||||||
memcpy(&be, ptr, sizeof(be));
|
memcpy(&be, ptr, sizeof(be));
|
||||||
-#if defined(_MSC_VER)
|
-#if defined(_MSC_VER)
|
||||||
- return _byteswap_ushort(be);
|
|
||||||
+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
|
+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
|
||||||
+ return be;
|
+ return be;
|
||||||
#else
|
|
||||||
- return __builtin_bswap16(be);
|
|
||||||
+ #if defined(_MSC_VER)
|
|
||||||
+ return _byteswap_ushort(be);
|
|
||||||
+#else
|
+#else
|
||||||
+ return __builtin_bswap16(be);
|
+ #if defined(_MSC_VER)
|
||||||
|
return _byteswap_ushort(be);
|
||||||
|
-#else
|
||||||
|
+ #else
|
||||||
|
return __builtin_bswap16(be);
|
||||||
+ #endif
|
+ #endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -71,16 +102,20 @@ diff -up firefox-128.0/gfx/skia/skia/modules/skcms/skcms.cc.mozilla-bmo1504834-p
|
|||||||
uint32_t be;
|
uint32_t be;
|
||||||
memcpy(&be, ptr, sizeof(be));
|
memcpy(&be, ptr, sizeof(be));
|
||||||
-#if defined(_MSC_VER)
|
-#if defined(_MSC_VER)
|
||||||
- return _byteswap_ulong(be);
|
|
||||||
+#if __BYTE_ORDER == __ORDER_BIG_ENDIAN__
|
+#if __BYTE_ORDER == __ORDER_BIG_ENDIAN__
|
||||||
+ return be;
|
+ return be;
|
||||||
#else
|
|
||||||
- return __builtin_bswap32(be);
|
|
||||||
+ #if defined(_MSC_VER)
|
|
||||||
+ return _byteswap_ulong(be);
|
|
||||||
+#else
|
+#else
|
||||||
+ return __builtin_bswap32(be);
|
+ #if defined(_MSC_VER)
|
||||||
|
return _byteswap_ulong(be);
|
||||||
|
-#else
|
||||||
|
+ #else
|
||||||
|
return __builtin_bswap32(be);
|
||||||
+ #endif
|
+ #endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int32_t read_big_i32(const uint8_t* ptr) {
|
||||||
|
return (int32_t)read_big_u32(ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
static float read_big_fixed(const uint8_t* ptr) {
|
||||||
|
|||||||
@ -1,17 +1,64 @@
|
|||||||
# HG changeset patch
|
# HG changeset patch
|
||||||
# Parent 09cd4ac2cc607e85aa572425b824fbab386af607
|
# Parent d1d66f7e4d0e7fd45e91e4fcee07555e72046d48
|
||||||
For FF68, AntiAliasing of XULTexts seem to be broken on big endian (s390x). Text and icons of the sandwich-menu to the
|
For FF68, AntiAliasing of XULTexts seem to be broken on big endian (s390x). Text and icons of the sandwich-menu to the
|
||||||
right of the address bar, as well as plugin-windows appears transparant, which usually means unreadable (white on white).
|
right of the address bar, as well as plugin-windows appears transparant, which usually means unreadable (white on white).
|
||||||
|
|
||||||
|
diff --git a/gfx/skia/skia/include/private/SkNx.h b/gfx/skia/skia/include/private/SkNx.h
|
||||||
|
--- a/gfx/skia/skia/include/private/SkNx.h
|
||||||
|
+++ b/gfx/skia/skia/include/private/SkNx.h
|
||||||
|
@@ -233,17 +233,28 @@ struct SkNx<1,T> {
|
||||||
|
AI SkNx operator<<(int bits) const { return fVal << bits; }
|
||||||
|
AI SkNx operator>>(int bits) const { return fVal >> bits; }
|
||||||
|
|
||||||
|
AI SkNx operator+(const SkNx& y) const { return fVal + y.fVal; }
|
||||||
|
AI SkNx operator-(const SkNx& y) const { return fVal - y.fVal; }
|
||||||
|
AI SkNx operator*(const SkNx& y) const { return fVal * y.fVal; }
|
||||||
|
AI SkNx operator/(const SkNx& y) const { return fVal / y.fVal; }
|
||||||
|
|
||||||
|
+ // On Big endian the commented out variant doesn't work,
|
||||||
|
+ // and honestly, I have no idea why it exists in the first place.
|
||||||
|
+ // The reason its broken is, I think, that it defaults to the double-variant of ToBits()
|
||||||
|
+ // which gets a 64-bit integer, and FromBits returns 32-bit,
|
||||||
|
+ // cutting off the wrong half again.
|
||||||
|
+ // Overall, I see no reason to have ToBits and FromBits at all (even for floats/doubles).
|
||||||
|
+ // Still we are only "fixing" this for big endian and leave little endian alone (never touch a running system)
|
||||||
|
+#ifdef SK_CPU_BENDIAN
|
||||||
|
+ AI SkNx operator&(const SkNx& y) const { return fVal & y.fVal; }
|
||||||
|
+#else
|
||||||
|
AI SkNx operator&(const SkNx& y) const { return FromBits(ToBits(fVal) & ToBits(y.fVal)); }
|
||||||
|
+#endif
|
||||||
|
AI SkNx operator|(const SkNx& y) const { return FromBits(ToBits(fVal) | ToBits(y.fVal)); }
|
||||||
|
AI SkNx operator^(const SkNx& y) const { return FromBits(ToBits(fVal) ^ ToBits(y.fVal)); }
|
||||||
|
|
||||||
|
AI SkNx operator==(const SkNx& y) const { return FromBits(fVal == y.fVal ? ~0 : 0); }
|
||||||
|
AI SkNx operator!=(const SkNx& y) const { return FromBits(fVal != y.fVal ? ~0 : 0); }
|
||||||
|
AI SkNx operator<=(const SkNx& y) const { return FromBits(fVal <= y.fVal ? ~0 : 0); }
|
||||||
|
AI SkNx operator>=(const SkNx& y) const { return FromBits(fVal >= y.fVal ? ~0 : 0); }
|
||||||
|
AI SkNx operator< (const SkNx& y) const { return FromBits(fVal < y.fVal ? ~0 : 0); }
|
||||||
diff --git a/gfx/skia/skia/src/opts/SkBlitMask_opts.h b/gfx/skia/skia/src/opts/SkBlitMask_opts.h
|
diff --git a/gfx/skia/skia/src/opts/SkBlitMask_opts.h b/gfx/skia/skia/src/opts/SkBlitMask_opts.h
|
||||||
--- a/gfx/skia/skia/src/opts/SkBlitMask_opts.h
|
--- a/gfx/skia/skia/src/opts/SkBlitMask_opts.h
|
||||||
+++ b/gfx/skia/skia/src/opts/SkBlitMask_opts.h
|
+++ b/gfx/skia/skia/src/opts/SkBlitMask_opts.h
|
||||||
@@ -210,6 +210,8 @@ namespace SK_OPTS_NS {
|
@@ -198,17 +198,23 @@ namespace SK_OPTS_NS {
|
||||||
|
const SkAlpha* mask, size_t maskRB,
|
||||||
|
int w, int h) {
|
||||||
|
auto fn = [](const Sk4px& d, const Sk4px& aa) {
|
||||||
|
// = (s + d(1-sa))aa + d(1-aa)
|
||||||
|
// = s*aa + d(1-sa*aa)
|
||||||
// ~~~>
|
// ~~~>
|
||||||
// a = 1*aa + d(1-1*aa) = aa + d(1-aa)
|
// a = 1*aa + d(1-1*aa) = aa + d(1-aa)
|
||||||
// c = 0*aa + d(1-1*aa) = d(1-aa)
|
// c = 0*aa + d(1-1*aa) = d(1-aa)
|
||||||
+ // TODO: Check this for endian-issues!
|
+
|
||||||
+ // Do we need to switch 255 to the front for all of those tuples?
|
+ // For big endian we have to swap the alpha-mask from 0,0,0,255 to 255,0,0,0
|
||||||
return (aa & Sk4px(skvx::byte16{0,0,0,255, 0,0,0,255, 0,0,0,255, 0,0,0,255}))
|
+#ifdef SK_CPU_BENDIAN
|
||||||
|
+ return Sk4px(Sk16b(aa) & Sk16b(255,0,0,0, 255,0,0,0, 255,0,0,0, 255,0,0,0))
|
||||||
|
+#else
|
||||||
|
return Sk4px(Sk16b(aa) & Sk16b(0,0,0,255, 0,0,0,255, 0,0,0,255, 0,0,0,255))
|
||||||
|
+#endif
|
||||||
+ d.approxMulDiv255(aa.inv());
|
+ d.approxMulDiv255(aa.inv());
|
||||||
};
|
};
|
||||||
|
while (h --> 0) {
|
||||||
|
Sk4px::MapDstAlpha(w, dst, mask, fn);
|
||||||
|
dst += dstRB / sizeof(*dst);
|
||||||
|
mask += maskRB / sizeof(*mask);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -1,61 +0,0 @@
|
|||||||
diff -up firefox-140.0/widget/gtk/nsWindow.cpp.mozilla-bmo1636168-fscreen firefox-140.0/widget/gtk/nsWindow.cpp
|
|
||||||
--- firefox-140.0/widget/gtk/nsWindow.cpp.mozilla-bmo1636168-fscreen 2025-06-02 15:27:00.000000000 +0200
|
|
||||||
+++ firefox-140.0/widget/gtk/nsWindow.cpp 2025-06-12 10:23:04.789578675 +0200
|
|
||||||
@@ -196,7 +196,7 @@ constexpr gint kEvents =
|
|
||||||
GDK_VISIBILITY_NOTIFY_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK |
|
|
||||||
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_SMOOTH_SCROLL_MASK |
|
|
||||||
GDK_TOUCH_MASK | GDK_SCROLL_MASK | GDK_POINTER_MOTION_MASK |
|
|
||||||
- GDK_PROPERTY_CHANGE_MASK;
|
|
||||||
+ GDK_PROPERTY_CHANGE_MASK | GDK_FOCUS_CHANGE_MASK;
|
|
||||||
|
|
||||||
/* utility functions */
|
|
||||||
static bool is_mouse_in_window(GdkWindow* aWindow, gdouble aMouseX,
|
|
||||||
@@ -454,7 +454,8 @@ nsWindow::nsWindow()
|
|
||||||
mResizedAfterMoveToRect(false),
|
|
||||||
mConfiguredClearColor(false),
|
|
||||||
mGotNonBlankPaint(false),
|
|
||||||
- mNeedsToRetryCapturingMouse(false) {
|
|
||||||
+ mNeedsToRetryCapturingMouse(false),
|
|
||||||
+ mPendingFullscreen(false) {
|
|
||||||
mSizeConstraints.mMaxSize = GetSafeWindowSize(mSizeConstraints.mMaxSize);
|
|
||||||
|
|
||||||
if (!gGlobalsInitialized) {
|
|
||||||
@@ -5424,6 +5425,19 @@ void nsWindow::OnWindowStateEvent(GtkWid
|
|
||||||
if (mSizeMode != oldSizeMode && mWidgetListener) {
|
|
||||||
mWidgetListener->SizeModeChanged(mSizeMode);
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ // Hack to ensure window switched to fullscreen - avoid to fail when starting
|
|
||||||
+ // in kiosk mode
|
|
||||||
+ if (mPendingFullscreen &&
|
|
||||||
+ !(aEvent->new_window_state & GDK_WINDOW_STATE_FULLSCREEN)) {
|
|
||||||
+ LOG(
|
|
||||||
+ " Window should be fullscreen, but it's not, retrying set to "
|
|
||||||
+ "fullscreen.\n");
|
|
||||||
+ MakeFullScreen(true);
|
|
||||||
+ } else {
|
|
||||||
+ LOG(" Window successfully switched to fullscreen, happy now\n");
|
|
||||||
+ mPendingFullscreen = false;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
void nsWindow::OnDPIChanged() {
|
|
||||||
@@ -7239,6 +7253,7 @@ nsresult nsWindow::MakeFullScreen(bool a
|
|
||||||
|
|
||||||
if (mKioskMonitor.isSome()) {
|
|
||||||
KioskLockOnMonitor();
|
|
||||||
+ mPendingFullscreen = true;
|
|
||||||
} else {
|
|
||||||
gtk_window_fullscreen(GTK_WINDOW(mShell));
|
|
||||||
}
|
|
||||||
diff -up firefox-140.0/widget/gtk/nsWindow.h.mozilla-bmo1636168-fscreen firefox-140.0/widget/gtk/nsWindow.h
|
|
||||||
--- firefox-140.0/widget/gtk/nsWindow.h.mozilla-bmo1636168-fscreen 2025-06-02 15:27:00.000000000 +0200
|
|
||||||
+++ firefox-140.0/widget/gtk/nsWindow.h 2025-06-12 10:18:42.354025723 +0200
|
|
||||||
@@ -786,6 +786,7 @@ class nsWindow final : public nsBaseWidg
|
|
||||||
* move-to-rect callback we set mMovedAfterMoveToRect/mResizedAfterMoveToRect.
|
|
||||||
*/
|
|
||||||
bool mWaitingForMoveToRectCallback : 1;
|
|
||||||
+ bool mPendingFullscreen : 1;
|
|
||||||
bool mMovedAfterMoveToRect : 1;
|
|
||||||
bool mResizedAfterMoveToRect : 1;
|
|
||||||
|
|
||||||
@ -1,66 +0,0 @@
|
|||||||
diff -up firefox-140.0/dom/media/mp4/MP4Demuxer.cpp.mozilla-bmo1670333 firefox-140.0/dom/media/mp4/MP4Demuxer.cpp
|
|
||||||
--- firefox-140.0/dom/media/mp4/MP4Demuxer.cpp.mozilla-bmo1670333 2025-06-17 18:15:13.000000000 +0200
|
|
||||||
+++ firefox-140.0/dom/media/mp4/MP4Demuxer.cpp 2025-06-18 10:17:47.394794429 +0200
|
|
||||||
@@ -32,6 +32,8 @@ mozilla::LogModule* GetDemuxerLog() { re
|
|
||||||
DDMOZ_LOG(gMediaDemuxerLog, mozilla::LogLevel::Debug, "::%s: " arg, \
|
|
||||||
__func__, ##__VA_ARGS__)
|
|
||||||
|
|
||||||
+extern bool gUseKeyframeFromContainer;
|
|
||||||
+
|
|
||||||
namespace mozilla {
|
|
||||||
|
|
||||||
using TimeUnit = media::TimeUnit;
|
|
||||||
@@ -419,6 +421,12 @@ already_AddRefed<MediaRawData> MP4TrackD
|
|
||||||
case H264::FrameType::OTHER: {
|
|
||||||
bool keyframe = type == H264::FrameType::I_FRAME_OTHER ||
|
|
||||||
type == H264::FrameType::I_FRAME_IDR;
|
|
||||||
+ if (gUseKeyframeFromContainer) {
|
|
||||||
+ if (sample->mKeyframe && sample->mKeyframe != keyframe) {
|
|
||||||
+ sample->mKeyframe = keyframe;
|
|
||||||
+ }
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
if (sample->mKeyframe != keyframe) {
|
|
||||||
NS_WARNING(nsPrintfCString("Frame incorrectly marked as %skeyframe "
|
|
||||||
"@ pts:%" PRId64 " dur:%" PRId64
|
|
||||||
diff -up firefox-140.0/dom/media/platforms/PDMFactory.cpp.mozilla-bmo1670333 firefox-140.0/dom/media/platforms/PDMFactory.cpp
|
|
||||||
--- firefox-140.0/dom/media/platforms/PDMFactory.cpp.mozilla-bmo1670333 2025-06-17 18:15:13.000000000 +0200
|
|
||||||
+++ firefox-140.0/dom/media/platforms/PDMFactory.cpp 2025-06-18 10:10:29.209789856 +0200
|
|
||||||
@@ -61,6 +61,8 @@
|
|
||||||
|
|
||||||
#include <functional>
|
|
||||||
|
|
||||||
+bool gUseKeyframeFromContainer = false;
|
|
||||||
+
|
|
||||||
using DecodeSupport = mozilla::media::DecodeSupport;
|
|
||||||
using DecodeSupportSet = mozilla::media::DecodeSupportSet;
|
|
||||||
using MediaCodec = mozilla::media::MediaCodec;
|
|
||||||
@@ -573,7 +575,7 @@ void PDMFactory::CreateRddPDMs() {
|
|
||||||
#ifdef MOZ_FFMPEG
|
|
||||||
if (StaticPrefs::media_ffmpeg_enabled() &&
|
|
||||||
StaticPrefs::media_rdd_ffmpeg_enabled() &&
|
|
||||||
- !StartupPDM(FFmpegRuntimeLinker::CreateDecoder())) {
|
|
||||||
+ !(mFFmpegUsed = StartupPDM(FFmpegRuntimeLinker::CreateDecoder()))) {
|
|
||||||
mFailureFlags += GetFailureFlagBasedOnFFmpegStatus(
|
|
||||||
FFmpegRuntimeLinker::LinkStatusCode());
|
|
||||||
}
|
|
||||||
@@ -749,7 +751,7 @@ void PDMFactory::CreateDefaultPDMs() {
|
|
||||||
StartupPDM(AgnosticDecoderModule::Create(),
|
|
||||||
StaticPrefs::media_prefer_non_ffvpx());
|
|
||||||
|
|
||||||
- if (StaticPrefs::media_gmp_decoder_enabled() &&
|
|
||||||
+ if (StaticPrefs::media_gmp_decoder_enabled() && !mFFmpegUsed &&
|
|
||||||
!StartupPDM(GMPDecoderModule::Create(),
|
|
||||||
StaticPrefs::media_gmp_decoder_preferred())) {
|
|
||||||
mFailureFlags += DecoderDoctorDiagnostics::Flags::GMPPDMFailedToStartup;
|
|
||||||
diff -up firefox-140.0/dom/media/platforms/PDMFactory.h.mozilla-bmo1670333 firefox-140.0/dom/media/platforms/PDMFactory.h
|
|
||||||
--- firefox-140.0/dom/media/platforms/PDMFactory.h.mozilla-bmo1670333 2025-06-17 18:15:13.000000000 +0200
|
|
||||||
+++ firefox-140.0/dom/media/platforms/PDMFactory.h 2025-06-18 10:10:29.210054963 +0200
|
|
||||||
@@ -105,6 +105,7 @@ class PDMFactory final {
|
|
||||||
RefPtr<PlatformDecoderModule> mNullPDM;
|
|
||||||
|
|
||||||
DecoderDoctorDiagnostics::FlagsSet mFailureFlags;
|
|
||||||
+ bool mFFmpegUsed = false;
|
|
||||||
|
|
||||||
friend class RemoteVideoDecoderParent;
|
|
||||||
static void EnsureInit();
|
|
||||||
@ -1,74 +0,0 @@
|
|||||||
diff -up firefox-140.1.0/media/ffvpx/libavcodec/allcodecs.c.mozilla-bmo1789216-disable-av1 firefox-140.1.0/media/ffvpx/libavcodec/allcodecs.c
|
|
||||||
--- firefox-140.1.0/media/ffvpx/libavcodec/allcodecs.c.mozilla-bmo1789216-disable-av1 2025-07-14 19:14:53.000000000 +0200
|
|
||||||
+++ firefox-140.1.0/media/ffvpx/libavcodec/allcodecs.c 2025-07-31 15:12:56.818469857 +0200
|
|
||||||
@@ -769,8 +769,11 @@ extern const FFCodec ff_libaribb24_decod
|
|
||||||
extern const FFCodec ff_libcelt_decoder;
|
|
||||||
extern const FFCodec ff_libcodec2_encoder;
|
|
||||||
extern const FFCodec ff_libcodec2_decoder;
|
|
||||||
+#if CONFIG_MOZ_AV1
|
|
||||||
extern const FFCodec ff_libdav1d_decoder;
|
|
||||||
extern const FFCodec ff_libdavs2_decoder;
|
|
||||||
+extern const FFCodec ff_libuavs3d_decoder;
|
|
||||||
+#endif
|
|
||||||
extern const FFCodec ff_libfdk_aac_encoder;
|
|
||||||
extern const FFCodec ff_libfdk_aac_decoder;
|
|
||||||
extern const FFCodec ff_libgsm_encoder;
|
|
||||||
@@ -800,7 +803,6 @@ extern const FFCodec ff_libspeex_decoder
|
|
||||||
extern const FFCodec ff_libsvtav1_encoder;
|
|
||||||
extern const FFCodec ff_libtheora_encoder;
|
|
||||||
extern const FFCodec ff_libtwolame_encoder;
|
|
||||||
-extern const FFCodec ff_libuavs3d_decoder;
|
|
||||||
extern const FFCodec ff_libvo_amrwbenc_encoder;
|
|
||||||
extern const FFCodec ff_libvorbis_encoder;
|
|
||||||
extern const FFCodec ff_libvorbis_decoder;
|
|
||||||
diff -up firefox-140.1.0/media/ffvpx/libavcodec/codec_list.c.mozilla-bmo1789216-disable-av1 firefox-140.1.0/media/ffvpx/libavcodec/codec_list.c
|
|
||||||
--- firefox-140.1.0/media/ffvpx/libavcodec/codec_list.c.mozilla-bmo1789216-disable-av1 2025-07-14 19:14:53.000000000 +0200
|
|
||||||
+++ firefox-140.1.0/media/ffvpx/libavcodec/codec_list.c 2025-07-31 15:12:56.820214239 +0200
|
|
||||||
@@ -11,12 +11,14 @@ static const FFCodec * const codec_list[
|
|
||||||
#if CONFIG_MP3_DECODER
|
|
||||||
&ff_mp3_decoder,
|
|
||||||
#endif
|
|
||||||
+#if CONFIG_MOZ_AV1
|
|
||||||
#if CONFIG_LIBDAV1D
|
|
||||||
&ff_libdav1d_decoder,
|
|
||||||
#endif
|
|
||||||
#if CONFIG_AV1_DECODER
|
|
||||||
&ff_av1_decoder,
|
|
||||||
#endif
|
|
||||||
+#endif
|
|
||||||
#if CONFIG_LIBVORBIS_DECODER
|
|
||||||
&ff_libvorbis_decoder,
|
|
||||||
#endif
|
|
||||||
diff -up firefox-140.1.0/media/ffvpx/libavcodec/moz.build.mozilla-bmo1789216-disable-av1 firefox-140.1.0/media/ffvpx/libavcodec/moz.build
|
|
||||||
--- firefox-140.1.0/media/ffvpx/libavcodec/moz.build.mozilla-bmo1789216-disable-av1 2025-07-14 19:14:53.000000000 +0200
|
|
||||||
+++ firefox-140.1.0/media/ffvpx/libavcodec/moz.build 2025-08-01 12:40:58.374987298 +0200
|
|
||||||
@@ -94,7 +94,6 @@ if not CONFIG['MOZ_FFVPX_AUDIOONLY']:
|
|
||||||
'imgconvert.c',
|
|
||||||
'libaom.c',
|
|
||||||
'libaomenc.c',
|
|
||||||
- 'libdav1d.c',
|
|
||||||
'libvpxdec.c',
|
|
||||||
'libvpxenc.c',
|
|
||||||
'mathtables.c',
|
|
||||||
@@ -120,16 +119,15 @@ if not CONFIG['MOZ_FFVPX_AUDIOONLY']:
|
|
||||||
'vpx_rac.c',
|
|
||||||
]
|
|
||||||
|
|
||||||
- if CONFIG["MOZ_SYSTEM_AV1"]:
|
|
||||||
- CFLAGS += CONFIG['MOZ_SYSTEM_LIBDAV1D_CFLAGS']
|
|
||||||
- CFLAGS += CONFIG['MOZ_SYSTEM_LIBAOM_CFLAGS']
|
|
||||||
- OS_LIBS += CONFIG['MOZ_SYSTEM_LIBDAV1D_LIBS']
|
|
||||||
- OS_LIBS += CONFIG['MOZ_SYSTEM_LIBAOM_LIBS']
|
|
||||||
- else:
|
|
||||||
+ if CONFIG["MOZ_AV1"]:
|
|
||||||
USE_LIBS += [
|
|
||||||
'dav1d',
|
|
||||||
'media_libdav1d_asm',
|
|
||||||
]
|
|
||||||
+ SOURCES += [
|
|
||||||
+ 'libdav1d.c',
|
|
||||||
+ ]
|
|
||||||
+
|
|
||||||
|
|
||||||
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
|
|
||||||
LOCAL_INCLUDES += ['/media/mozva']
|
|
||||||
@ -6,11 +6,15 @@ Solution: Problem is with skia once again. Output of webgl seems endian-correct,
|
|||||||
So we swizzle the output of webgl after reading it from readpixels()
|
So we swizzle the output of webgl after reading it from readpixels()
|
||||||
Note: This does not fix all webGL sites, but is a step in the right direction
|
Note: This does not fix all webGL sites, but is a step in the right direction
|
||||||
|
|
||||||
Index: firefox-115.0/gfx/gl/GLContext.h
|
diff --git a/gfx/gl/GLContext.h b/gfx/gl/GLContext.h
|
||||||
===================================================================
|
--- a/gfx/gl/GLContext.h
|
||||||
--- firefox-115.0.orig/gfx/gl/GLContext.h
|
+++ b/gfx/gl/GLContext.h
|
||||||
+++ firefox-115.0/gfx/gl/GLContext.h
|
@@ -1548,16 +1548,23 @@ class GLContext : public GenericAtomicRe
|
||||||
@@ -1560,6 +1560,13 @@ class GLContext : public GenericAtomicRe
|
AFTER_GL_CALL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void raw_fReadPixels(GLint x, GLint y, GLsizei width, GLsizei height,
|
||||||
|
GLenum format, GLenum type, GLvoid* pixels) {
|
||||||
BEFORE_GL_CALL;
|
BEFORE_GL_CALL;
|
||||||
mSymbols.fReadPixels(x, y, width, height, format, type, pixels);
|
mSymbols.fReadPixels(x, y, width, height, format, type, pixels);
|
||||||
OnSyncCall();
|
OnSyncCall();
|
||||||
@ -24,3 +28,8 @@ Index: firefox-115.0/gfx/gl/GLContext.h
|
|||||||
AFTER_GL_CALL;
|
AFTER_GL_CALL;
|
||||||
mHeavyGLCallsSinceLastFlush = true;
|
mHeavyGLCallsSinceLastFlush = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void fReadPixels(GLint x, GLint y, GLsizei width, GLsizei height,
|
||||||
|
GLenum format, GLenum type, GLvoid* pixels);
|
||||||
|
|
||||||
|
public:
|
||||||
|
|||||||
14
SOURCES/mozilla-build-arm.patch
Normal file
14
SOURCES/mozilla-build-arm.patch
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
diff -up firefox-52.0/gfx/skia/skia/include/core/SkPreConfig.h.arm firefox-52.0/gfx/skia/skia/include/core/SkPreConfig.h
|
||||||
|
--- firefox-52.0/gfx/skia/skia/include/core/SkPreConfig.h.arm 2017-03-03 13:53:52.480754536 +0100
|
||||||
|
+++ firefox-52.0/gfx/skia/skia/include/core/SkPreConfig.h 2017-03-03 13:56:01.476018102 +0100
|
||||||
|
@@ -203,6 +203,10 @@
|
||||||
|
#define SK_ARM_HAS_CRC32
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#if defined(__aarch64__)
|
||||||
|
+ #undef SK_ARM_HAS_NEON
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#if !defined(SKIA_IMPLEMENTATION)
|
||||||
51
SOURCES/mozilla-s390x-skia-gradient.patch
Normal file
51
SOURCES/mozilla-s390x-skia-gradient.patch
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# Parent acf59ea86dd1d878b43920832093f082dcfc61c0
|
||||||
|
|
||||||
|
diff -r acf59ea86dd1 gfx/skia/skia/src/shaders/gradients/Sk4fLinearGradient.cpp
|
||||||
|
--- a/gfx/skia/skia/src/shaders/gradients/Sk4fLinearGradient.cpp Mon Mar 09 08:26:10 2020 +0100
|
||||||
|
+++ b/gfx/skia/skia/src/shaders/gradients/Sk4fLinearGradient.cpp Fri Mar 27 13:30:28 2020 +0100
|
||||||
|
@@ -7,7 +7,7 @@
|
||||||
|
|
||||||
|
#include "include/core/SkPaint.h"
|
||||||
|
#include "src/shaders/gradients/Sk4fLinearGradient.h"
|
||||||
|
-
|
||||||
|
+#include "src/core/SkEndian.h"
|
||||||
|
#include <cmath>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
|
@@ -28,6 +28,9 @@
|
||||||
|
|
||||||
|
while (n >= 4) {
|
||||||
|
DstTraits<premul>::store4x(c0, c1, c2, c3, dst, bias0, bias1);
|
||||||
|
+#ifdef SK_CPU_BENDIAN
|
||||||
|
+ SkEndianSwap32s(dst, 4);
|
||||||
|
+#endif
|
||||||
|
dst += 4;
|
||||||
|
|
||||||
|
c0 = c0 + dc4;
|
||||||
|
@@ -37,12 +40,23 @@
|
||||||
|
n -= 4;
|
||||||
|
}
|
||||||
|
if (n & 2) {
|
||||||
|
- DstTraits<premul>::store(c0, dst++, bias0);
|
||||||
|
- DstTraits<premul>::store(c1, dst++, bias1);
|
||||||
|
+ DstTraits<premul>::store(c0, dst, bias0);
|
||||||
|
+#ifdef SK_CPU_BENDIAN
|
||||||
|
+ *dst = SkEndianSwap32(*dst);
|
||||||
|
+#endif
|
||||||
|
+ ++dst;
|
||||||
|
+ DstTraits<premul>::store(c1, dst, bias1);
|
||||||
|
+#ifdef SK_CPU_BENDIAN
|
||||||
|
+ *dst = SkEndianSwap32(*dst);
|
||||||
|
+#endif
|
||||||
|
+ ++dst;
|
||||||
|
c0 = c0 + dc2;
|
||||||
|
}
|
||||||
|
if (n & 1) {
|
||||||
|
DstTraits<premul>::store(c0, dst, bias0);
|
||||||
|
+#ifdef SK_CPU_BENDIAN
|
||||||
|
+ *dst = SkEndianSwap32(*dst);
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -4,4 +4,4 @@ export LDFLAGS="-L%{_buildrootdir}%{bundled_install_path}/%{_lib} $LDFLAGS"
|
|||||||
export LDFLAGS="-Wl,-rpath,%{bundled_install_path}/%{_lib} $LDFLAGS"
|
export LDFLAGS="-Wl,-rpath,%{bundled_install_path}/%{_lib} $LDFLAGS"
|
||||||
export LDFLAGS="-Wl,-rpath-link,%{_buildrootdir}%{bundled_install_path}/%{_lib} $LDFLAGS"
|
export LDFLAGS="-Wl,-rpath-link,%{_buildrootdir}%{bundled_install_path}/%{_lib} $LDFLAGS"
|
||||||
export PKG_CONFIG_PATH=%{_buildrootdir}%{bundled_install_path}/%{_lib}/pkgconfig
|
export PKG_CONFIG_PATH=%{_buildrootdir}%{bundled_install_path}/%{_lib}/pkgconfig
|
||||||
export PATH="%{_buildrootdir}%{bundled_install_path}/bin:$PATH"
|
export PATH="{_buildrootdir}%{bundled_install_path}/bin:$PATH"
|
||||||
|
|||||||
115
SOURCES/pgo.patch
Normal file
115
SOURCES/pgo.patch
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
diff -up firefox-99.0/build/moz.configure/lto-pgo.configure.pgo firefox-99.0/build/moz.configure/lto-pgo.configure
|
||||||
|
--- firefox-99.0/build/moz.configure/lto-pgo.configure.pgo 2022-03-31 01:24:38.000000000 +0200
|
||||||
|
+++ firefox-99.0/build/moz.configure/lto-pgo.configure 2022-04-04 10:15:45.387694143 +0200
|
||||||
|
@@ -247,8 +247,8 @@ def lto(
|
||||||
|
cflags.append("-flto")
|
||||||
|
ldflags.append("-flto")
|
||||||
|
else:
|
||||||
|
- cflags.append("-flto=thin")
|
||||||
|
- ldflags.append("-flto=thin")
|
||||||
|
+ cflags.append("-flto")
|
||||||
|
+ ldflags.append("-flto")
|
||||||
|
|
||||||
|
if target.os == "Android" and value == "cross":
|
||||||
|
# Work around https://github.com/rust-lang/rust/issues/90088
|
||||||
|
@@ -264,7 +264,7 @@ def lto(
|
||||||
|
if value == "full":
|
||||||
|
cflags.append("-flto")
|
||||||
|
else:
|
||||||
|
- cflags.append("-flto=thin")
|
||||||
|
+ cflags.append("-flto")
|
||||||
|
# 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")
|
||||||
|
diff -up firefox-99.0/build/pgo/profileserver.py.pgo firefox-99.0/build/pgo/profileserver.py
|
||||||
|
--- firefox-99.0/build/pgo/profileserver.py.pgo 2022-03-31 01:24:38.000000000 +0200
|
||||||
|
+++ firefox-99.0/build/pgo/profileserver.py 2022-04-04 10:15:45.387694143 +0200
|
||||||
|
@@ -11,7 +11,7 @@ import glob
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
import mozcrash
|
||||||
|
-from mozbuild.base import MozbuildObject, BinaryNotFoundException
|
||||||
|
+from mozbuild.base import MozbuildObject, BinaryNotFoundException, BuildEnvironmentNotFoundException
|
||||||
|
from mozfile import TemporaryDirectory
|
||||||
|
from mozhttpd import MozHttpd
|
||||||
|
from mozprofile import FirefoxProfile, Preferences
|
||||||
|
@@ -87,9 +87,22 @@ if __name__ == "__main__":
|
||||||
|
locations = ServerLocations()
|
||||||
|
locations.add_host(host="127.0.0.1", port=PORT, options="primary,privileged")
|
||||||
|
|
||||||
|
- old_profraw_files = glob.glob("*.profraw")
|
||||||
|
- for f in old_profraw_files:
|
||||||
|
- os.remove(f)
|
||||||
|
+ using_gcc = False
|
||||||
|
+ try:
|
||||||
|
+ if build.config_environment.substs.get('CC_TYPE') == 'gcc':
|
||||||
|
+ using_gcc = True
|
||||||
|
+ except BuildEnvironmentNotFoundException:
|
||||||
|
+ pass
|
||||||
|
+
|
||||||
|
+ if using_gcc:
|
||||||
|
+ for dirpath, _, filenames in os.walk('.'):
|
||||||
|
+ for f in filenames:
|
||||||
|
+ if f.endswith('.gcda'):
|
||||||
|
+ os.remove(os.path.join(dirpath, f))
|
||||||
|
+ else:
|
||||||
|
+ old_profraw_files = glob.glob('*.profraw')
|
||||||
|
+ for f in old_profraw_files:
|
||||||
|
+ os.remove(f)
|
||||||
|
|
||||||
|
with TemporaryDirectory() as profilePath:
|
||||||
|
# TODO: refactor this into mozprofile
|
||||||
|
@@ -212,6 +225,10 @@ if __name__ == "__main__":
|
||||||
|
print("Firefox exited successfully, but produced a crashreport")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
+ print('Copying profile data....')
|
||||||
|
+ os.system('pwd');
|
||||||
|
+ os.system('tar cf profdata.tar.gz `find . -name "*.gcda"`; cd ..; tar xf instrumented/profdata.tar.gz;');
|
||||||
|
+
|
||||||
|
llvm_profdata = env.get("LLVM_PROFDATA")
|
||||||
|
if llvm_profdata:
|
||||||
|
profraw_files = glob.glob("*.profraw")
|
||||||
|
diff -up firefox-99.0/build/unix/mozconfig.unix.pgo firefox-99.0/build/unix/mozconfig.unix
|
||||||
|
--- firefox-99.0/build/unix/mozconfig.unix.pgo 2022-03-31 01:24:38.000000000 +0200
|
||||||
|
+++ firefox-99.0/build/unix/mozconfig.unix 2022-04-04 10:15:45.387694143 +0200
|
||||||
|
@@ -4,6 +4,15 @@ if [ -n "$FORCE_GCC" ]; then
|
||||||
|
CC="$MOZ_FETCHES_DIR/gcc/bin/gcc"
|
||||||
|
CXX="$MOZ_FETCHES_DIR/gcc/bin/g++"
|
||||||
|
|
||||||
|
+ if [ -n "$MOZ_PGO" ]; then
|
||||||
|
+ if [ -z "$USE_ARTIFACT" ]; then
|
||||||
|
+ ac_add_options --enable-lto
|
||||||
|
+ fi
|
||||||
|
+ export AR="$topsrcdir/gcc/bin/gcc-ar"
|
||||||
|
+ export NM="$topsrcdir/gcc/bin/gcc-nm"
|
||||||
|
+ export RANLIB="$topsrcdir/gcc/bin/gcc-ranlib"
|
||||||
|
+ fi
|
||||||
|
+
|
||||||
|
# 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:$PATH"
|
||||||
|
diff -up firefox-99.0/extensions/spellcheck/src/moz.build.pgo firefox-99.0/extensions/spellcheck/src/moz.build
|
||||||
|
--- firefox-99.0/extensions/spellcheck/src/moz.build.pgo 2022-03-31 01:24:50.000000000 +0200
|
||||||
|
+++ firefox-99.0/extensions/spellcheck/src/moz.build 2022-04-04 10:15:45.387694143 +0200
|
||||||
|
@@ -28,3 +28,5 @@ EXPORTS.mozilla += [
|
||||||
|
"mozInlineSpellChecker.h",
|
||||||
|
"mozSpellChecker.h",
|
||||||
|
]
|
||||||
|
+
|
||||||
|
+CXXFLAGS += ['-fno-devirtualize']
|
||||||
|
diff -up firefox-99.0/toolkit/components/terminator/nsTerminator.cpp.pgo firefox-99.0/toolkit/components/terminator/nsTerminator.cpp
|
||||||
|
--- firefox-99.0/toolkit/components/terminator/nsTerminator.cpp.pgo 2022-04-04 10:15:45.387694143 +0200
|
||||||
|
+++ firefox-99.0/toolkit/components/terminator/nsTerminator.cpp 2022-04-04 10:19:07.022239556 +0200
|
||||||
|
@@ -466,6 +466,11 @@ void nsTerminator::StartWatchdog() {
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+ // Disable watchdog for PGO train builds - writting profile information at
|
||||||
|
+ // exit may take time and it is better to make build hang rather than
|
||||||
|
+ // silently produce poorly performing binary.
|
||||||
|
+ crashAfterMS = INT32_MAX;
|
||||||
|
+
|
||||||
|
UniquePtr<Options> options(new Options());
|
||||||
|
// crashAfterTicks is guaranteed to be > 0 as
|
||||||
|
// crashAfterMS >= ADDITIONAL_WAIT_BEFORE_CRASH_MS >> HEARTBEAT_INTERVAL_MS
|
||||||
13
SOURCES/print-error-reftest
Executable file
13
SOURCES/print-error-reftest
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
# Print reftest failures and compose them to html
|
||||||
|
|
||||||
|
TEST_DIR="$1"
|
||||||
|
TEST_FLAVOUR="$2"
|
||||||
|
OUTPUT_FILE="failures-reftest$TEST_FLAVOUR.html"
|
||||||
|
|
||||||
|
grep --text -e "REFTEST TEST-UNEXPECTED-PASS" -e "REFTEST TEST-UNEXPECTED-FAIL" -e "IMAGE 1 (TEST):" -e "IMAGE 2 (REFERENCE):" $TEST_DIR/reftest$TEST_FLAVOUR 2>&1 > $OUTPUT_FILE
|
||||||
|
sed -i '/REFTEST IMAGE 1/a ">' $OUTPUT_FILE
|
||||||
|
sed -i '/REFTEST IMAGE 2/a "><BR><BR>' $OUTPUT_FILE
|
||||||
|
sed -i '/REFTEST TEST/a <BR>' $OUTPUT_FILE
|
||||||
|
sed -i -e 's/^REFTEST IMAGE 1 (TEST): /<img border=2 src="/' $OUTPUT_FILE
|
||||||
|
sed -i -e 's/^REFTEST IMAGE 2 (REFERENCE): /<img border=2 src="/' $OUTPUT_FILE
|
||||||
9
SOURCES/print-errors
Executable file
9
SOURCES/print-errors
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
# Print failed tests
|
||||||
|
|
||||||
|
TEST_DIR=$1
|
||||||
|
TEST_FLAVOUR=$2
|
||||||
|
|
||||||
|
grep "TEST-UNEXPECTED-FAIL" $TEST_DIR/mochitest$TEST_FLAVOUR 2>&1 > failures-mochitest$TEST_FLAVOUR.txt
|
||||||
|
grep --text -e " FAIL " -e " TIMEOUT " $TEST_DIR/xpcshell$TEST_FLAVOUR 2>&1 > failures-xpcshell$TEST_FLAVOUR.txt
|
||||||
|
grep --text -e "REFTEST TEST-UNEXPECTED-PASS" -e "REFTEST TEST-UNEXPECTED-FAIL" $TEST_DIR/reftest$TEST_FLAVOUR 2>&1 > failures-reftest$TEST_FLAVOUR.txt
|
||||||
9
SOURCES/print_failures
Executable file
9
SOURCES/print_failures
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
# Analyze and print test failures
|
||||||
|
|
||||||
|
export TEST_DIR="test_results"
|
||||||
|
|
||||||
|
#./print-errors $TEST_DIR ""
|
||||||
|
./print-errors $TEST_DIR "-wr"
|
||||||
|
#./print-error-reftest $TEST_DIR ""
|
||||||
|
./print-error-reftest $TEST_DIR "-wr"
|
||||||
10
SOURCES/print_results
Executable file
10
SOURCES/print_results
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
# Analyze and print general test results
|
||||||
|
|
||||||
|
export TEST_DIR="test_results"
|
||||||
|
|
||||||
|
echo "Test results"
|
||||||
|
#echo "Basic compositor"
|
||||||
|
#./psummary $TEST_DIR ""
|
||||||
|
echo "WebRender"
|
||||||
|
./psummary $TEST_DIR "-wr"
|
||||||
@ -12,17 +12,6 @@ rm -vf ./process-tarball-dir/*/testing/web-platform/tests/css/css-ui/support/cur
|
|||||||
rm -vf ./process-tarball-dir/*/testing/web-platform/tests/conformance-checkers/html-rdfa/0230-novalid.html
|
rm -vf ./process-tarball-dir/*/testing/web-platform/tests/conformance-checkers/html-rdfa/0230-novalid.html
|
||||||
rm -vf ./process-tarball-dir/*/testing/web-platform/tests/conformance-checkers/html-rdfa/0231-isvalid.html
|
rm -vf ./process-tarball-dir/*/testing/web-platform/tests/conformance-checkers/html-rdfa/0231-isvalid.html
|
||||||
rm -vf ./process-tarball-dir/*/layout/inspector/tests/chrome/test_fontVariationsAPI.css
|
rm -vf ./process-tarball-dir/*/layout/inspector/tests/chrome/test_fontVariationsAPI.css
|
||||||
# A forbidden code point was found in:
|
|
||||||
rm -vf ./process-tarball-dir/*/mobile/android/android-components/components/browser/errorpages/src/main/res/values-ar/strings.xml
|
|
||||||
rm -vf ./process-tarball-dir/*/mobile/android/android-components/components/feature/addons/src/main/res/values-ur/strings.xml
|
|
||||||
rm -vf ./process-tarball-dir/*/third_party/webkit/PerformanceTests/Speedometer3/resources/editors/dist/assets/codemirror-521de7ab.js
|
|
||||||
rm -vf ./process-tarball-dir/*/third_party/python/pip/pip-24.0.dist-info/AUTHORS.txt
|
|
||||||
rm -vf ./process-tarball-dir/*/dom/locks/test/crashtests/1908240.js
|
|
||||||
|
|
||||||
# We uses system freetype2
|
|
||||||
rm -vrf ./process-tarball-dir/*/modules/freetype2
|
|
||||||
# We use system zlib
|
|
||||||
rm -vrf ./process-tarball-dir/*/modules/zlib
|
|
||||||
|
|
||||||
processed_tarball=${1/source/processed-source}
|
processed_tarball=${1/source/processed-source}
|
||||||
|
|
||||||
|
|||||||
23
SOURCES/psummary
Executable file
23
SOURCES/psummary
Executable file
@ -0,0 +1,23 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
# Analyze and print specialized (basic/webrender) test results
|
||||||
|
|
||||||
|
TEST_DIR=$1
|
||||||
|
TEST_FLAVOUR=$2
|
||||||
|
|
||||||
|
MPASS=`grep "TEST_END: Test OK" $TEST_DIR/mochitest$TEST_FLAVOUR | wc -l`
|
||||||
|
MERR=`grep "TEST_END: Test ERROR" $TEST_DIR/mochitest$TEST_FLAVOUR | wc -l`
|
||||||
|
MUNEX=`grep "TEST-UNEXPECTED-FAIL" $TEST_DIR/mochitest$TEST_FLAVOUR | wc -l`
|
||||||
|
echo "Mochitest PASSED: $MPASS FAILED: $MERR UNEXPECTED-FAILURES: $MUNEX"
|
||||||
|
|
||||||
|
XPCPASS=`grep --text "Expected results:" $TEST_DIR/xpcshell$TEST_FLAVOUR | cut -d ' ' -f 3`
|
||||||
|
XPCFAIL=`grep --text "Unexpected results:" $TEST_DIR/xpcshell$TEST_FLAVOUR | cut -d ' ' -f 3`
|
||||||
|
echo "XPCShell: PASSED: $XPCPASS FAILED: $XPCFAIL"
|
||||||
|
|
||||||
|
CRPASS=`grep "REFTEST INFO | Successful:" $TEST_DIR/crashtest$TEST_FLAVOUR | cut -d ' ' -f 5`
|
||||||
|
CRFAIL=`grep "^REFTEST INFO | Unexpected:" $TEST_DIR/crashtest$TEST_FLAVOUR | cut -d ' ' -f 5`
|
||||||
|
echo "Crashtest: PASSED: $CRPASS FAILED: $CRFAIL"
|
||||||
|
|
||||||
|
RFPASS=`grep --text "REFTEST INFO | Successful:" $TEST_DIR/reftest$TEST_FLAVOUR | cut -d ' ' -f 5`
|
||||||
|
RFUN=`grep --text "^REFTEST INFO | Unexpected:" $TEST_DIR/reftest$TEST_FLAVOUR | cut -d ' ' -f 5`
|
||||||
|
RFKNOWN=`grep --text "REFTEST INFO | Known problems:" $TEST_DIR/reftest$TEST_FLAVOUR | cut -d ' ' -f 6`
|
||||||
|
echo "Reftest: PASSED: $RFPASS FAILED: $RFUN Known issues: $RFKNOWN"
|
||||||
@ -1,12 +1,12 @@
|
|||||||
diff -up firefox-140.0/extensions/auth/nsAuthSambaNTLM.cpp.rhbz-1173156 firefox-140.0/extensions/auth/nsAuthSambaNTLM.cpp
|
diff -up firefox-60.5.0/extensions/auth/nsAuthSambaNTLM.cpp.rhbz-1173156 firefox-60.5.0/extensions/auth/nsAuthSambaNTLM.cpp
|
||||||
--- firefox-140.0/extensions/auth/nsAuthSambaNTLM.cpp.rhbz-1173156 2025-06-02 15:26:45.000000000 +0200
|
--- firefox-60.5.0/extensions/auth/nsAuthSambaNTLM.cpp.rhbz-1173156 2019-01-22 10:36:09.284069020 +0100
|
||||||
+++ firefox-140.0/extensions/auth/nsAuthSambaNTLM.cpp 2025-06-12 11:02:37.183715940 +0200
|
+++ firefox-60.5.0/extensions/auth/nsAuthSambaNTLM.cpp 2019-01-22 10:37:12.669757744 +0100
|
||||||
@@ -153,7 +153,7 @@ nsresult nsAuthSambaNTLM::SpawnNTLMAuthH
|
@@ -161,7 +161,7 @@ nsresult nsAuthSambaNTLM::SpawnNTLMAuthH
|
||||||
options.fds_to_remap.push_back(
|
const char* username = PR_GetEnv("USER");
|
||||||
std::pair{fromChildPipeWrite.get(), STDOUT_FILENO});
|
if (!username) return NS_ERROR_FAILURE;
|
||||||
|
|
||||||
- std::vector<std::string> argvVec{"ntlm_auth", "--helper-protocol",
|
|
||||||
+ std::vector<std::string> argvVec{"/usr/bin/ntlm_auth", "--helper-protocol",
|
|
||||||
"ntlmssp-client-1", "--use-cached-creds",
|
|
||||||
"--username", username};
|
|
||||||
|
|
||||||
|
- const char* const args[] = {"ntlm_auth",
|
||||||
|
+ const char* const args[] = {"/usr/bin/ntlm_auth",
|
||||||
|
"--helper-protocol",
|
||||||
|
"ntlmssp-client-1",
|
||||||
|
"--use-cached-creds",
|
||||||
|
|||||||
23
SOURCES/rhbz-1219542-s390-build.patch
Normal file
23
SOURCES/rhbz-1219542-s390-build.patch
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
diff -up firefox-55.0/js/src/old-configure.in.rhbz-1219542-s390 firefox-55.0/js/src/old-configure.in
|
||||||
|
--- firefox-55.0/js/src/old-configure.in.rhbz-1219542-s390 2017-07-31 18:20:48.000000000 +0200
|
||||||
|
+++ firefox-55.0/js/src/old-configure.in 2017-08-02 14:31:32.190243669 +0200
|
||||||
|
@@ -541,7 +541,7 @@ case "$host" in
|
||||||
|
|
||||||
|
*-linux*|*-kfreebsd*-gnu|*-gnu*)
|
||||||
|
HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
|
||||||
|
- HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
|
||||||
|
+ HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O1}"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
@@ -617,8 +617,8 @@ case "$target" in
|
||||||
|
|
||||||
|
*-*linux*)
|
||||||
|
if test "$GNU_CC" -o "$GNU_CXX"; then
|
||||||
|
- MOZ_PGO_OPTIMIZE_FLAGS="-O3"
|
||||||
|
- MOZ_OPTIMIZE_FLAGS="-O3"
|
||||||
|
+ MOZ_PGO_OPTIMIZE_FLAGS="-O1"
|
||||||
|
+ MOZ_OPTIMIZE_FLAGS="-O1"
|
||||||
|
if test -z "$CLANG_CC"; then
|
||||||
|
MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS"
|
||||||
|
fi
|
||||||
@ -1,43 +0,0 @@
|
|||||||
changeset: 781221:573380ae60a7
|
|
||||||
tag: tip
|
|
||||||
user: stransky <stransky@redhat.com>
|
|
||||||
date: Mon Mar 24 10:13:50 2025 +0100
|
|
||||||
files: dom/cache/CacheStorage.cpp dom/indexedDB/ActorsParent.cpp
|
|
||||||
description:
|
|
||||||
FIPS-youtube
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/dom/cache/CacheStorage.cpp b/dom/cache/CacheStorage.cpp
|
|
||||||
--- a/dom/cache/CacheStorage.cpp
|
|
||||||
+++ b/dom/cache/CacheStorage.cpp
|
|
||||||
@@ -38,6 +38,7 @@
|
|
||||||
#include "nsURLParsers.h"
|
|
||||||
#include "js/Object.h" // JS::GetClass
|
|
||||||
#include "js/PropertyAndElement.h" // JS_DefineProperty
|
|
||||||
+#include "pk11pub.h"
|
|
||||||
|
|
||||||
namespace mozilla::dom::cache {
|
|
||||||
|
|
||||||
@@ -581,7 +582,7 @@ bool CacheStorage::HasStorageAccess(UseC
|
|
||||||
if (!principal->IsSystemPrincipal() &&
|
|
||||||
principal->GetPrivateBrowsingId() !=
|
|
||||||
nsIScriptSecurityManager::DEFAULT_PRIVATE_BROWSING_ID &&
|
|
||||||
- !StaticPrefs::dom_cache_privateBrowsing_enabled()) {
|
|
||||||
+ (!StaticPrefs::dom_cache_privateBrowsing_enabled() || PK11_IsFIPS())) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
diff --git a/dom/indexedDB/ActorsParent.cpp b/dom/indexedDB/ActorsParent.cpp
|
|
||||||
--- a/dom/indexedDB/ActorsParent.cpp
|
|
||||||
+++ b/dom/indexedDB/ActorsParent.cpp
|
|
||||||
@@ -14791,7 +14791,8 @@ nsresult FactoryOp::Open() {
|
|
||||||
mEnforcingQuota = mPersistenceType != PERSISTENCE_TYPE_PERSISTENT;
|
|
||||||
|
|
||||||
if (mOriginMetadata.mIsPrivate) {
|
|
||||||
- if (StaticPrefs::dom_indexedDB_privateBrowsing_enabled()) {
|
|
||||||
+ if (StaticPrefs::dom_indexedDB_privateBrowsing_enabled() &&
|
|
||||||
+ !PK11_IsFIPS()) {
|
|
||||||
// Explicitly disallow moz-extension urls from using the encrypted
|
|
||||||
// indexedDB storage mode when the caller is an extension (see Bug
|
|
||||||
// 1841806).
|
|
||||||
|
|
||||||
80
SOURCES/run-tests-wayland
Executable file
80
SOURCES/run-tests-wayland
Executable file
@ -0,0 +1,80 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
# usage: run-tests-wayland [test flavour]
|
||||||
|
|
||||||
|
set -x
|
||||||
|
|
||||||
|
RUN_XPCSHELL_TEST=1
|
||||||
|
RUN_REFTEST=1
|
||||||
|
RUN_MOCHITEST=1
|
||||||
|
RUN_CRASHTEST=1
|
||||||
|
|
||||||
|
while (( "$#" )); do
|
||||||
|
SELECTED_TEST=$1
|
||||||
|
if [ "$SELECTED_TEST" = "xpcshell" ] ; then
|
||||||
|
RUN_XPCSHELL_TEST=1
|
||||||
|
elif [ "$SELECTED_TEST" = "reftest" ] ; then
|
||||||
|
RUN_REFTEST=1
|
||||||
|
elif [ "$SELECTED_TEST" = "mochitest" ] ; then
|
||||||
|
RUN_MOCHITEST=1
|
||||||
|
elif [ "$SELECTED_TEST" = "crashtest" ] ; then
|
||||||
|
RUN_CRASHTEST=1
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
export MACH_USE_SYSTEM_PYTHON=1
|
||||||
|
export MOZ_NODE_PATH=/usr/bin/node
|
||||||
|
|
||||||
|
MOCHITEST_PARAMS="--timeout 1 --chunk-by-dir 4"
|
||||||
|
TEST_DIR="test_results"
|
||||||
|
mkdir $TEST_DIR
|
||||||
|
|
||||||
|
env | grep "DISPLAY"
|
||||||
|
|
||||||
|
# Fix for system nss
|
||||||
|
ln -s /usr/bin/certutil objdir/dist/bin/certutil
|
||||||
|
ln -s /usr/bin/pk12util objdir/dist/bin/pk12util
|
||||||
|
|
||||||
|
NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"
|
||||||
|
|
||||||
|
export MOZ_ENABLE_WAYLAND=1
|
||||||
|
|
||||||
|
if [ $RUN_XPCSHELL_TEST -ne 0 ] ; then
|
||||||
|
# ./mach xpcshell-test 2>&1 | cat - | tee $TEST_DIR/xpcshell
|
||||||
|
./mach xpcshell-test --enable-webrender 2>&1 | cat - | tee $TEST_DIR/xpcshell-wr
|
||||||
|
sleep 60
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Basic render testing
|
||||||
|
export TEST_PARAMS="--setpref reftest.ignoreWindowSize=true --setpref widget.wayland.test-workarounds.enabled=true"
|
||||||
|
#export TEST_FLAVOUR=""
|
||||||
|
#if [ $RUN_REFTEST -ne 0 ] ; then
|
||||||
|
# ./mach reftest --marionette localhost:$(($(($RANDOM))+2000)) $TEST_PARAMS 2>&1 | tee $TEST_DIR/reftest$TEST_FLAVOUR
|
||||||
|
#fi
|
||||||
|
#if [ $RUN_CRASHTEST -ne 0 ] ; then
|
||||||
|
# ./mach crashtest --marionette localhost:$(($(($RANDOM))+2000)) $TEST_PARAMS 2>&1 | tee $TEST_DIR/crashtest$TEST_FLAVOUR
|
||||||
|
#fi
|
||||||
|
#if [ $RUN_MOCHITEST -ne 0 ] ; then
|
||||||
|
# ./mach mochitest --marionette localhost:$(($(($RANDOM))+2000)) $MOCHITEST_PARAMS $TEST_PARAMS 2>&1 | tee $TEST_DIR/mochitest$TEST_FLAVOUR
|
||||||
|
#fi
|
||||||
|
|
||||||
|
# WebRender testing
|
||||||
|
export TEST_PARAMS="--enable-webrender $TEST_PARAMS"
|
||||||
|
export TEST_FLAVOUR="-wr"
|
||||||
|
# Use dom/base/test or dom/base/test/chrome for short version
|
||||||
|
export MOCHITEST_DIR='dom'
|
||||||
|
if [ $RUN_REFTEST -ne 0 ] ; then
|
||||||
|
./mach reftest $TEST_PARAMS 2>&1 | tee $TEST_DIR/reftest$TEST_FLAVOUR
|
||||||
|
sleep 60
|
||||||
|
fi
|
||||||
|
if [ $RUN_CRASHTEST -ne 0 ] ; then
|
||||||
|
./mach crashtest $TEST_PARAMS 2>&1 | tee $TEST_DIR/crashtest$TEST_FLAVOUR
|
||||||
|
sleep 60
|
||||||
|
fi
|
||||||
|
if [ $RUN_MOCHITEST -ne 0 ] ; then
|
||||||
|
./mach mochitest $MOCHITEST_DIR $MOCHITEST_PARAMS $TEST_PARAMS 2>&1 | tee $TEST_DIR/mochitest$TEST_FLAVOUR
|
||||||
|
sleep 60
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -f objdir/dist/bin/certutil
|
||||||
|
rm -f objdir/dist/bin/pk12util
|
||||||
39
SOURCES/run-tests-x11
Executable file
39
SOURCES/run-tests-x11
Executable file
@ -0,0 +1,39 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
set -x
|
||||||
|
|
||||||
|
export MACH_USE_SYSTEM_PYTHON=1
|
||||||
|
export MOZ_NODE_PATH=/usr/bin/node
|
||||||
|
export X_PARAMS="-screen 0 1600x1200x24"
|
||||||
|
export MOCHITEST_PARAMS="--timeout 1 --chunk-by-dir 4"
|
||||||
|
export TEST_DIR="test_results"
|
||||||
|
|
||||||
|
# Fix for system nss
|
||||||
|
ln -s /usr/bin/certutil objdir/dist/bin/certutil
|
||||||
|
ln -s /usr/bin/pk12util objdir/dist/bin/pk12util
|
||||||
|
|
||||||
|
NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"
|
||||||
|
|
||||||
|
# Basic render testing
|
||||||
|
export TEST_PARAMS=""
|
||||||
|
export TEST_FLAVOUR=""
|
||||||
|
#xvfb-run -s "$X_PARAMS" -n 91 ./mach xpcshell-test --sequential $TEST_PARAMS 2>&1 | cat - | tee $TEST_DIR/xpcshell
|
||||||
|
#xvfb-run -s "$X_PARAMS" -n 92 ./mach reftest --marionette localhost:$(($(($RANDOM))+2000)) $TEST_PARAMS 2>&1 | tee $TEST_DIR/reftest$TEST_FLAVOUR
|
||||||
|
#xvfb-run -s "$X_PARAMS" -n 93 ./mach crashtest --marionette localhost:$(($(($RANDOM))+2000)) $TEST_PARAMS 2>&1 | tee $TEST_DIR/crashtest$TEST_FLAVOUR
|
||||||
|
#xvfb-run -s "$X_PARAMS" -n 94 ./mach mochitest --marionette localhost:$(($(($RANDOM))+2000)) $MOCHITEST_PARAMS $TEST_PARAMS 2>&1 | tee $TEST_DIR/mochitest$TEST_FLAVOUR
|
||||||
|
|
||||||
|
# WebRender testing
|
||||||
|
export TEST_PARAMS="--enable-webrender $TEST_PARAMS"
|
||||||
|
export TEST_FLAVOUR="-wr"
|
||||||
|
#xvfb-run -s "$X_PARAMS" -n 95 ./mach xpcshell-test --sequential $TEST_PARAMS 2>&1 | cat - | tee $TEST_DIR/xpcshell-wr
|
||||||
|
#sleep 60
|
||||||
|
#xvfb-run -s "$X_PARAMS" -n 96 ./mach reftest $TEST_PARAMS 2>&1 | tee $TEST_DIR/reftest$TEST_FLAVOUR
|
||||||
|
#sleep 60
|
||||||
|
#xvfb-run -s "$X_PARAMS" -n 97 ./mach crashtest $TEST_PARAMS 2>&1 | tee $TEST_DIR/crashtest$TEST_FLAVOUR
|
||||||
|
#sleep 60
|
||||||
|
#export DISPLAY=:0
|
||||||
|
#./mach mochitest dom/base/test/ $MOCHITEST_PARAMS $TEST_PARAMS 2>&1 | tee $TEST_DIR/mochitest$TEST_FLAVOUR
|
||||||
|
export DISPLAY=:98
|
||||||
|
xvfb-run -s "$X_PARAMS" -n 98 ./mach mochitest dom/base/test/ $MOCHITEST_PARAMS $TEST_PARAMS 2>&1 | tee $TEST_DIR/mochitest$TEST_FLAVOUR
|
||||||
|
|
||||||
|
rm -f objdir/dist/bin/certutil
|
||||||
|
rm -f objdir/dist/bin/pk12util
|
||||||
50
SOURCES/run-wayland-compositor
Executable file
50
SOURCES/run-wayland-compositor
Executable file
@ -0,0 +1,50 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
# Run wayland compositor and set WAYLAND_DISPLAY env variable
|
||||||
|
|
||||||
|
set -x
|
||||||
|
|
||||||
|
echo export DESKTOP_SESSION=gnome > $HOME/.xsessionrc
|
||||||
|
echo export XDG_CURRENT_DESKTOP=GNOME > $HOME/.xsessionrc
|
||||||
|
echo export XDG_SESSION_TYPE=wayland >> $HOME/.xsessionrc
|
||||||
|
|
||||||
|
# Turn off the screen saver and screen locking
|
||||||
|
gsettings set org.gnome.desktop.screensaver idle-activation-enabled false
|
||||||
|
gsettings set org.gnome.desktop.screensaver lock-enabled false
|
||||||
|
gsettings set org.gnome.desktop.screensaver lock-delay 3600
|
||||||
|
|
||||||
|
# Disable the screen saver
|
||||||
|
# This starts the gnome-keyring-daemon with an unlocked login keyring. libsecret uses this to
|
||||||
|
# store secrets. Firefox uses libsecret to store a key that protects sensitive information like
|
||||||
|
# credit card numbers.
|
||||||
|
if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
|
||||||
|
# if not found, launch a new one
|
||||||
|
eval `dbus-launch --sh-syntax`
|
||||||
|
fi
|
||||||
|
eval `echo '' | /usr/bin/gnome-keyring-daemon -r -d --unlock --components=secrets`
|
||||||
|
|
||||||
|
if [ -z "$XDG_RUNTIME_DIR" ]; then
|
||||||
|
export XDG_RUNTIME_DIR=$HOME
|
||||||
|
fi
|
||||||
|
|
||||||
|
. xvfb-run -s "-screen 0 1600x1200x24" -n 80 mutter --display=:80 --wayland --nested &
|
||||||
|
export DISPLAY=:80
|
||||||
|
|
||||||
|
if [ -z "$WAYLAND_DISPLAY" ] ; then
|
||||||
|
export WAYLAND_DISPLAY=wayland-0
|
||||||
|
else
|
||||||
|
export WAYLAND_DISPLAY=wayland-1
|
||||||
|
fi
|
||||||
|
sleep 10
|
||||||
|
retry_count=0
|
||||||
|
max_retries=5
|
||||||
|
until [ $retry_count -gt $max_retries ]; do
|
||||||
|
if [ -S "$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" ]; then
|
||||||
|
retry_count=$(($max_retries + 1))
|
||||||
|
else
|
||||||
|
retry_count=$(($retry_count + 1))
|
||||||
|
echo "Waiting for Mutter, retry: $retry_count"
|
||||||
|
sleep 2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
env | grep "DISPLAY"
|
||||||
@ -1,260 +0,0 @@
|
|||||||
#!/usr/bin/bash
|
|
||||||
|
|
||||||
|
|
||||||
function run_tests_wayland {
|
|
||||||
# usage: run-tests-wayland [test flavour]
|
|
||||||
|
|
||||||
set -x
|
|
||||||
|
|
||||||
RUN_XPCSHELL_TEST=1
|
|
||||||
RUN_REFTEST=1
|
|
||||||
RUN_MOCHITEST=1
|
|
||||||
RUN_CRASHTEST=1
|
|
||||||
|
|
||||||
while (( "$#" )); do
|
|
||||||
SELECTED_TEST=$1
|
|
||||||
if [ "$SELECTED_TEST" = "xpcshell" ] ; then
|
|
||||||
RUN_XPCSHELL_TEST=1
|
|
||||||
elif [ "$SELECTED_TEST" = "reftest" ] ; then
|
|
||||||
RUN_REFTEST=1
|
|
||||||
elif [ "$SELECTED_TEST" = "mochitest" ] ; then
|
|
||||||
RUN_MOCHITEST=1
|
|
||||||
elif [ "$SELECTED_TEST" = "crashtest" ] ; then
|
|
||||||
RUN_CRASHTEST=1
|
|
||||||
fi
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
|
|
||||||
export MACH_USE_SYSTEM_PYTHON=1
|
|
||||||
export MOZ_NODE_PATH=/usr/bin/node
|
|
||||||
|
|
||||||
MOCHITEST_PARAMS="--timeout 1 --chunk-by-dir 4"
|
|
||||||
TEST_DIR="test_results"
|
|
||||||
mkdir $TEST_DIR
|
|
||||||
|
|
||||||
env | grep "DISPLAY"
|
|
||||||
|
|
||||||
# Fix for system nss
|
|
||||||
ln -s /usr/bin/certutil objdir/dist/bin/certutil
|
|
||||||
ln -s /usr/bin/pk12util objdir/dist/bin/pk12util
|
|
||||||
|
|
||||||
NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"
|
|
||||||
|
|
||||||
export MOZ_ENABLE_WAYLAND=1
|
|
||||||
|
|
||||||
if [ $RUN_XPCSHELL_TEST -ne 0 ] ; then
|
|
||||||
# ./mach xpcshell-test 2>&1 | cat - | tee $TEST_DIR/xpcshell
|
|
||||||
./mach xpcshell-test --enable-webrender 2>&1 | cat - | tee $TEST_DIR/xpcshell-wr
|
|
||||||
sleep 60
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Basic render testing
|
|
||||||
export TEST_PARAMS="--setpref reftest.ignoreWindowSize=true --setpref widget.wayland.test-workarounds.enabled=true"
|
|
||||||
#export TEST_FLAVOUR=""
|
|
||||||
#if [ $RUN_REFTEST -ne 0 ] ; then
|
|
||||||
# ./mach reftest --marionette localhost:$(($(($RANDOM))+2000)) $TEST_PARAMS 2>&1 | tee $TEST_DIR/reftest$TEST_FLAVOUR
|
|
||||||
#fi
|
|
||||||
#if [ $RUN_CRASHTEST -ne 0 ] ; then
|
|
||||||
# ./mach crashtest --marionette localhost:$(($(($RANDOM))+2000)) $TEST_PARAMS 2>&1 | tee $TEST_DIR/crashtest$TEST_FLAVOUR
|
|
||||||
#fi
|
|
||||||
#if [ $RUN_MOCHITEST -ne 0 ] ; then
|
|
||||||
# ./mach mochitest --marionette localhost:$(($(($RANDOM))+2000)) $MOCHITEST_PARAMS $TEST_PARAMS 2>&1 | tee $TEST_DIR/mochitest$TEST_FLAVOUR
|
|
||||||
#fi
|
|
||||||
|
|
||||||
# WebRender testing
|
|
||||||
export TEST_PARAMS="--enable-webrender $TEST_PARAMS"
|
|
||||||
export TEST_FLAVOUR="-wr"
|
|
||||||
# Use dom/base/test or dom/base/test/chrome for short version
|
|
||||||
export MOCHITEST_DIR='dom'
|
|
||||||
if [ $RUN_REFTEST -ne 0 ] ; then
|
|
||||||
./mach reftest $TEST_PARAMS 2>&1 | tee $TEST_DIR/reftest$TEST_FLAVOUR
|
|
||||||
sleep 60
|
|
||||||
fi
|
|
||||||
if [ $RUN_CRASHTEST -ne 0 ] ; then
|
|
||||||
./mach crashtest $TEST_PARAMS 2>&1 | tee $TEST_DIR/crashtest$TEST_FLAVOUR
|
|
||||||
sleep 60
|
|
||||||
fi
|
|
||||||
if [ $RUN_MOCHITEST -ne 0 ] ; then
|
|
||||||
./mach mochitest $MOCHITEST_DIR $MOCHITEST_PARAMS $TEST_PARAMS 2>&1 | tee $TEST_DIR/mochitest$TEST_FLAVOUR
|
|
||||||
sleep 60
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm -f objdir/dist/bin/certutil
|
|
||||||
rm -f objdir/dist/bin/pk12util
|
|
||||||
}
|
|
||||||
|
|
||||||
function run_tests_x11() {
|
|
||||||
set -x
|
|
||||||
|
|
||||||
export MACH_USE_SYSTEM_PYTHON=1
|
|
||||||
export MOZ_NODE_PATH=/usr/bin/node
|
|
||||||
export X_PARAMS="-screen 0 1600x1200x24"
|
|
||||||
export MOCHITEST_PARAMS="--timeout 1 --chunk-by-dir 4"
|
|
||||||
export TEST_DIR="test_results"
|
|
||||||
|
|
||||||
# Fix for system nss
|
|
||||||
ln -s /usr/bin/certutil objdir/dist/bin/certutil
|
|
||||||
ln -s /usr/bin/pk12util objdir/dist/bin/pk12util
|
|
||||||
|
|
||||||
NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"
|
|
||||||
|
|
||||||
# Basic render testing
|
|
||||||
export TEST_PARAMS=""
|
|
||||||
export TEST_FLAVOUR=""
|
|
||||||
#xvfb-run -s "$X_PARAMS" -n 91 ./mach xpcshell-test --sequential $TEST_PARAMS 2>&1 | cat - | tee $TEST_DIR/xpcshell
|
|
||||||
#xvfb-run -s "$X_PARAMS" -n 92 ./mach reftest --marionette localhost:$(($(($RANDOM))+2000)) $TEST_PARAMS 2>&1 | tee $TEST_DIR/reftest$TEST_FLAVOUR
|
|
||||||
#xvfb-run -s "$X_PARAMS" -n 93 ./mach crashtest --marionette localhost:$(($(($RANDOM))+2000)) $TEST_PARAMS 2>&1 | tee $TEST_DIR/crashtest$TEST_FLAVOUR
|
|
||||||
#xvfb-run -s "$X_PARAMS" -n 94 ./mach mochitest --marionette localhost:$(($(($RANDOM))+2000)) $MOCHITEST_PARAMS $TEST_PARAMS 2>&1 | tee $TEST_DIR/mochitest$TEST_FLAVOUR
|
|
||||||
|
|
||||||
# WebRender testing
|
|
||||||
export TEST_PARAMS="--enable-webrender $TEST_PARAMS"
|
|
||||||
export TEST_FLAVOUR="-wr"
|
|
||||||
#xvfb-run -s "$X_PARAMS" -n 95 ./mach xpcshell-test --sequential $TEST_PARAMS 2>&1 | cat - | tee $TEST_DIR/xpcshell-wr
|
|
||||||
#sleep 60
|
|
||||||
#xvfb-run -s "$X_PARAMS" -n 96 ./mach reftest $TEST_PARAMS 2>&1 | tee $TEST_DIR/reftest$TEST_FLAVOUR
|
|
||||||
#sleep 60
|
|
||||||
#xvfb-run -s "$X_PARAMS" -n 97 ./mach crashtest $TEST_PARAMS 2>&1 | tee $TEST_DIR/crashtest$TEST_FLAVOUR
|
|
||||||
#sleep 60
|
|
||||||
#export DISPLAY=:0
|
|
||||||
#./mach mochitest dom/base/test/ $MOCHITEST_PARAMS $TEST_PARAMS 2>&1 | tee $TEST_DIR/mochitest$TEST_FLAVOUR
|
|
||||||
export DISPLAY=:98
|
|
||||||
xvfb-run -s "$X_PARAMS" -n 98 ./mach mochitest dom/base/test/ $MOCHITEST_PARAMS $TEST_PARAMS 2>&1 | tee $TEST_DIR/mochitest$TEST_FLAVOUR
|
|
||||||
|
|
||||||
rm -f objdir/dist/bin/certutil
|
|
||||||
rm -f objdir/dist/bin/pk12util
|
|
||||||
}
|
|
||||||
|
|
||||||
function run_wayland_compositor() {
|
|
||||||
# Run wayland compositor and set WAYLAND_DISPLAY env variable
|
|
||||||
set -x
|
|
||||||
|
|
||||||
echo export DESKTOP_SESSION=gnome > $HOME/.xsessionrc
|
|
||||||
echo export XDG_CURRENT_DESKTOP=GNOME > $HOME/.xsessionrc
|
|
||||||
echo export XDG_SESSION_TYPE=wayland >> $HOME/.xsessionrc
|
|
||||||
|
|
||||||
# Turn off the screen saver and screen locking
|
|
||||||
gsettings set org.gnome.desktop.screensaver idle-activation-enabled false
|
|
||||||
gsettings set org.gnome.desktop.screensaver lock-enabled false
|
|
||||||
gsettings set org.gnome.desktop.screensaver lock-delay 3600
|
|
||||||
|
|
||||||
# Disable the screen saver
|
|
||||||
# This starts the gnome-keyring-daemon with an unlocked login keyring. libsecret uses this to
|
|
||||||
# store secrets. Firefox uses libsecret to store a key that protects sensitive information like
|
|
||||||
# credit card numbers.
|
|
||||||
if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
|
|
||||||
# if not found, launch a new one
|
|
||||||
eval `dbus-launch --sh-syntax`
|
|
||||||
fi
|
|
||||||
eval `echo '' | /usr/bin/gnome-keyring-daemon -r -d --unlock --components=secrets`
|
|
||||||
|
|
||||||
if [ -z "$XDG_RUNTIME_DIR" ]; then
|
|
||||||
export XDG_RUNTIME_DIR=$HOME
|
|
||||||
fi
|
|
||||||
|
|
||||||
. xvfb-run -s "-screen 0 1600x1200x24" -n 80 mutter --display=:80 --wayland --nested &
|
|
||||||
export DISPLAY=:80
|
|
||||||
|
|
||||||
if [ -z "$WAYLAND_DISPLAY" ] ; then
|
|
||||||
export WAYLAND_DISPLAY=wayland-0
|
|
||||||
else
|
|
||||||
export WAYLAND_DISPLAY=wayland-1
|
|
||||||
fi
|
|
||||||
sleep 10
|
|
||||||
retry_count=0
|
|
||||||
max_retries=5
|
|
||||||
until [ $retry_count -gt $max_retries ]; do
|
|
||||||
if [ -S "$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" ]; then
|
|
||||||
retry_count=$(($max_retries + 1))
|
|
||||||
else
|
|
||||||
retry_count=$(($retry_count + 1))
|
|
||||||
echo "Waiting for Mutter, retry: $retry_count"
|
|
||||||
sleep 2
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
env | grep "DISPLAY"
|
|
||||||
}
|
|
||||||
|
|
||||||
function print_error_reftest() {
|
|
||||||
# Print reftest failures and compose them to html
|
|
||||||
|
|
||||||
TEST_DIR="$1"
|
|
||||||
TEST_FLAVOUR="$2"
|
|
||||||
OUTPUT_FILE="failures-reftest$TEST_FLAVOUR.html"
|
|
||||||
|
|
||||||
grep --text -e "REFTEST TEST-UNEXPECTED-PASS" -e "REFTEST TEST-UNEXPECTED-FAIL" -e "IMAGE 1 (TEST):" -e "IMAGE 2 (REFERENCE):" $TEST_DIR/reftest$TEST_FLAVOUR 2>&1 > $OUTPUT_FILE
|
|
||||||
sed -i '/REFTEST IMAGE 1/a ">' $OUTPUT_FILE
|
|
||||||
sed -i '/REFTEST IMAGE 2/a "><BR><BR>' $OUTPUT_FILE
|
|
||||||
sed -i '/REFTEST TEST/a <BR>' $OUTPUT_FILE
|
|
||||||
sed -i -e 's/^REFTEST IMAGE 1 (TEST): /<img border=2 src="/' $OUTPUT_FILE
|
|
||||||
sed -i -e 's/^REFTEST IMAGE 2 (REFERENCE): /<img border=2 src="/' $OUTPUT_FILE
|
|
||||||
}
|
|
||||||
|
|
||||||
function print_errors() {
|
|
||||||
#!/usr/bin/bash
|
|
||||||
# Print failed tests
|
|
||||||
|
|
||||||
TEST_DIR=$1
|
|
||||||
TEST_FLAVOUR=$2
|
|
||||||
|
|
||||||
grep "TEST-UNEXPECTED-FAIL" $TEST_DIR/mochitest$TEST_FLAVOUR 2>&1 > failures-mochitest$TEST_FLAVOUR.txt
|
|
||||||
grep --text -e " FAIL " -e " TIMEOUT " $TEST_DIR/xpcshell$TEST_FLAVOUR 2>&1 > failures-xpcshell$TEST_FLAVOUR.txt
|
|
||||||
grep --text -e "REFTEST TEST-UNEXPECTED-PASS" -e "REFTEST TEST-UNEXPECTED-FAIL" $TEST_DIR/reftest$TEST_FLAVOUR 2>&1 > failures-reftest$TEST_FLAVOUR.txt
|
|
||||||
}
|
|
||||||
|
|
||||||
function print_failures() {
|
|
||||||
#!/usr/bin/bash
|
|
||||||
# Analyze and print test failures
|
|
||||||
|
|
||||||
export TEST_DIR="test_results"
|
|
||||||
|
|
||||||
#./print-errors $TEST_DIR ""
|
|
||||||
print_errors $TEST_DIR "-wr"
|
|
||||||
#./print-error-reftest $TEST_DIR ""
|
|
||||||
print_error_reftest $TEST_DIR "-wr"
|
|
||||||
}
|
|
||||||
|
|
||||||
function psummary() {
|
|
||||||
#!/usr/bin/bash
|
|
||||||
# Analyze and print specialized (basic/webrender) test results
|
|
||||||
|
|
||||||
TEST_DIR=$1
|
|
||||||
TEST_FLAVOUR=$2
|
|
||||||
|
|
||||||
MPASS=`grep "TEST_END: Test OK" $TEST_DIR/mochitest$TEST_FLAVOUR | wc -l`
|
|
||||||
MERR=`grep "TEST_END: Test ERROR" $TEST_DIR/mochitest$TEST_FLAVOUR | wc -l`
|
|
||||||
MUNEX=`grep "TEST-UNEXPECTED-FAIL" $TEST_DIR/mochitest$TEST_FLAVOUR | wc -l`
|
|
||||||
echo "Mochitest PASSED: $MPASS FAILED: $MERR UNEXPECTED-FAILURES: $MUNEX"
|
|
||||||
|
|
||||||
XPCPASS=`grep --text "Expected results:" $TEST_DIR/xpcshell$TEST_FLAVOUR | cut -d ' ' -f 3`
|
|
||||||
XPCFAIL=`grep --text "Unexpected results:" $TEST_DIR/xpcshell$TEST_FLAVOUR | cut -d ' ' -f 3`
|
|
||||||
echo "XPCShell: PASSED: $XPCPASS FAILED: $XPCFAIL"
|
|
||||||
|
|
||||||
CRPASS=`grep "REFTEST INFO | Successful:" $TEST_DIR/crashtest$TEST_FLAVOUR | cut -d ' ' -f 5`
|
|
||||||
CRFAIL=`grep "^REFTEST INFO | Unexpected:" $TEST_DIR/crashtest$TEST_FLAVOUR | cut -d ' ' -f 5`
|
|
||||||
echo "Crashtest: PASSED: $CRPASS FAILED: $CRFAIL"
|
|
||||||
|
|
||||||
RFPASS=`grep --text "REFTEST INFO | Successful:" $TEST_DIR/reftest$TEST_FLAVOUR | cut -d ' ' -f 5`
|
|
||||||
RFUN=`grep --text "^REFTEST INFO | Unexpected:" $TEST_DIR/reftest$TEST_FLAVOUR | cut -d ' ' -f 5`
|
|
||||||
RFKNOWN=`grep --text "REFTEST INFO | Known problems:" $TEST_DIR/reftest$TEST_FLAVOUR | cut -d ' ' -f 6`
|
|
||||||
echo "Reftest: PASSED: $RFPASS FAILED: $RFUN Known issues: $RFKNOWN"
|
|
||||||
}
|
|
||||||
|
|
||||||
function print_results() {
|
|
||||||
#!/usr/bin/bash
|
|
||||||
# Analyze and print general test results
|
|
||||||
|
|
||||||
export TEST_DIR="test_results"
|
|
||||||
|
|
||||||
echo "Test results"
|
|
||||||
#echo "Basic compositor"
|
|
||||||
#./psummary $TEST_DIR ""
|
|
||||||
echo "WebRender"
|
|
||||||
psummary $TEST_DIR "-wr"
|
|
||||||
}
|
|
||||||
|
|
||||||
set -x
|
|
||||||
first=$1
|
|
||||||
shift
|
|
||||||
$first $*
|
|
||||||
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
diff -up firefox-121.0.1/toolkit/moz.configure.wasi firefox-121.0.1/toolkit/moz.configure
|
|
||||||
--- firefox-121.0.1/toolkit/moz.configure.wasi 2024-02-01 09:14:33.816548952 +0100
|
|
||||||
+++ firefox-121.0.1/toolkit/moz.configure 2024-02-01 09:15:53.264684309 +0100
|
|
||||||
@@ -2663,7 +2663,7 @@ with only_when(requires_wasm_sandboxing
|
|
||||||
def wasi_sysroot_flags(wasi_sysroot):
|
|
||||||
if wasi_sysroot:
|
|
||||||
log.info("Using wasi sysroot in %s", wasi_sysroot)
|
|
||||||
- return ["--sysroot=%s" % wasi_sysroot]
|
|
||||||
+ return ["--sysroot=%s" % wasi_sysroot, "-nodefaultlibs", "-lc", "-lwasi-emulated-process-clocks", "-lc++", "-lc++abi", "/home/jhorak/centpackages/NEW_ERA/firefox-2/firefox-140.6.0-build/firefox-140.6.0/wasi-sdk-20/build/compiler-rt/lib/wasi/libclang_rt.builtins-wasm32.a"]
|
|
||||||
return []
|
|
||||||
|
|
||||||
set_config("WASI_SYSROOT", wasi_sysroot)
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
diff -up firefox-121.0.1/toolkit/moz.configure.wasi firefox-121.0.1/toolkit/moz.configure
|
|
||||||
--- firefox-121.0.1/toolkit/moz.configure.wasi 2024-02-01 09:14:33.816548952 +0100
|
|
||||||
+++ firefox-121.0.1/toolkit/moz.configure 2024-02-01 09:15:53.264684309 +0100
|
|
||||||
@@ -2663,7 +2663,7 @@ with only_when(requires_wasm_sandboxing
|
|
||||||
def wasi_sysroot_flags(wasi_sysroot):
|
|
||||||
if wasi_sysroot:
|
|
||||||
log.info("Using wasi sysroot in %s", wasi_sysroot)
|
|
||||||
- return ["--sysroot=%s" % wasi_sysroot]
|
|
||||||
+ return ["--sysroot=%s" % wasi_sysroot, "-nodefaultlibs", "-lc", "-lwasi-emulated-process-clocks", "-lc++", "-lc++abi", "$LIBCLANG_RT"]
|
|
||||||
return []
|
|
||||||
|
|
||||||
set_config("WASI_SYSROOT", wasi_sysroot)
|
|
||||||
File diff suppressed because it is too large
Load Diff
2018
SPECS/firefox.spec
2018
SPECS/firefox.spec
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user