Compare commits

..

12 commits

Author SHA1 Message Date
sagitter
098e69f05f Remove obsolete Onion Browser button (rhbz#1842171) 2020-09-09 23:18:01 +02:00
sagitter
fea84c649d Mozilla Release 68.12.0ESR 2020-08-23 15:54:37 +02:00
sagitter
87621a1f7d Mozilla release 68.12.0ESR 2020-08-23 15:32:37 +02:00
sagitter
912f9b975f Mozilla release 68.12.0ESR 2020-08-23 15:30:31 +02:00
sagitter
33d750027f Mozilla release 68.12.0ESR 2020-08-23 15:28:55 +02:00
sagitter
5c6a1d351c Mozilla Release Candidate 68.12.0ESR 2020-08-23 15:20:15 +02:00
sagitter
736a692e7c Fix patch #1640982 2020-07-28 19:32:44 +02:00
sagitter
dbc71e962f Add patch file for mozilla bug #1640982 2020-07-28 19:07:25 +02:00
sagitter
65fde67a4d Add patch for mozilla bug #1640982 2020-07-28 19:03:56 +02:00
sagitter
3a0c4590e5 Try to pass Rust cflags (mozilla bug 1640982#c18) 2020-07-28 18:21:41 +02:00
sagitter
eeefaef161 Verify source files commit 2020-07-28 16:04:00 +02:00
sagitter
792c9e380f Mozilla release 68.11.0ESR 2020-07-28 15:54:51 +02:00
41 changed files with 2692 additions and 719 deletions

184
.gitignore vendored
View file

@ -116,183 +116,7 @@
/icecat-68.9.0-rh1.tar.bz2
/icecat-68.9.0-rh2.tar.bz2
/icecat-68.9.0-langpacks.tar.gz
/icecat-78.0-langpacks.tar.gz
/icecat-78.0-rh1.tar.bz2
/icecat-78.0.1-langpacks.tar.gz
/icecat-78.0.1-rh1.tar.bz2
/icecat-78.2.0-rh1.tar.bz2
/icecat-78.2.0-langpacks.tar.gz
/icecat-78.2.0-rh2.tar.bz2
/icecat-78.2.0-rh3.tar.bz2
/icecat-78.2.0-rh4.tar.bz2
/icecat-78.2.0-rh5.tar.bz2
/icecat-78.2.0-rh6.tar.bz2
/icecat-78.3.0-langpacks.tar.gz
/icecat-78.3.0-rh1.tar.bz2
/icecat-78.3.1-langpacks.tar.gz
/icecat-78.3.1-rh1.tar.bz2
/icecat-78.4.0-langpacks.tar.gz
/icecat-78.4.0-rh1.tar.bz2
/icecat-78.5.0-langpacks.tar.gz
/icecat-78.5.0-rh1.tar.bz2
/icecat-78.5.0-rh2.tar.bz2
/icecat-78.6.0-langpacks.tar.gz
/icecat-78.6.0-rh1.tar.bz2
/icecat-78.6.1-langpacks.tar.gz
/icecat-78.6.1-rh1.tar.bz2
/icecat-78.7.0-langpacks.tar.gz
/icecat-78.7.0-rh1.tar.bz2
/icecat-78.7.0-rh2.tar.bz2
/icecat-78.7.1-langpacks.tar.gz
/icecat-78.7.1-rh1.tar.bz2
/icecat-78.8.0-langpacks.tar.gz
/icecat-78.8.0-rh1.tar.bz2
/icecat-78.9.0-langpacks.tar.gz
/icecat-78.9.0-rh1.tar.bz2
/icecat-78.10.0-langpacks.tar.gz
/icecat-78.10.0-rh1.tar.bz2
/icecat-78.10.1-langpacks.tar.gz
/icecat-78.10.1-rh1.tar.bz2
/icecat-78.11.0-langpacks.tar.gz
/icecat-78.11.0-rh1.tar.bz2
/icecat-78.12.0-langpacks.tar.gz
/icecat-78.12.0-rh1.tar.bz2
/icecat-78.12.0-rh2.tar.bz2
/icecat-78.13.0-rh1.tar.bz2
/icecat-78.13.0-rh2.tar.bz2
/icecat-78.13.0-langpacks.tar.gz
/icecat-78.13.0-rh3.tar.bz2
/icecat-78.14.0-langpacks.tar.gz
/icecat-78.14.0-rh1.tar.bz2
/icecat-78.15.0-langpacks.tar.gz
/icecat-78.15.0-rh1.tar.bz2
/icecat-91.2.0-langpacks.tar.gz
/icecat-91.2.0-rh1.tar.bz2
/icecat-91.3.0-langpacks.tar.gz
/icecat-91.3.0-rh1.tar.bz2
/icecat-91.4.0-langpacks.tar.gz
/icecat-91.4.0-rh1.tar.bz2
/icecat-91.4.1-langpacks.tar.gz
/icecat-91.4.1-rh1.tar.bz2
/icecat-91.5.0-langpacks.tar.gz
/icecat-91.5.0-rh1.tar.bz2
/icecat-91.6.0-langpacks.tar.gz
/icecat-91.6.0-rh1.tar.bz2
/icecat-91.6.1-langpacks.tar.gz
/icecat-91.6.1-rh1.tar.bz2
/icecat-91.7.0-langpacks.tar.gz
/icecat-91.7.0-rh1.tar.bz2
/icecat-91.7.1-langpacks.tar.gz
/icecat-91.7.1-rh1.tar.bz2
/icecat-91.8.0-langpacks.tar.gz
/icecat-91.8.0-rh1.tar.bz2
/icecat-91.9.0-langpacks.tar.gz
/icecat-91.9.0-rh1.tar.bz2
/icecat-91.9.1-langpacks.tar.gz
/icecat-91.9.1-rh1.tar.bz2
/icecat-91.10.0-langpacks.tar.gz
/icecat-91.10.0-rh1.tar.bz2
/icecat-91.10.0-rh2.tar.bz2
/icecat-91.10.0-rh3.tar.bz2
/icecat-91.11.0-langpacks.tar.gz
/icecat-91.11.0-rh1.tar.bz2
/icecat-91.12.0-langpacks.tar.gz
/icecat-91.12.0-rh1.tar.bz2
/icecat-91.13.0-langpacks.tar.gz
/icecat-91.13.0-rh1.tar.bz2
/icecat-102.2.0-langpacks.tar.gz
/icecat-102.2.0-rh1.tar.bz2
/icecat-102.3.0-langpacks.tar.gz
/icecat-102.3.0-rh1.tar.bz2
/icecat-102.4.0-langpacks.tar.gz
/icecat-102.4.0-rh1.tar.bz2
/icecat-102.5.0-langpacks.tar.gz
/icecat-102.5.0-rh1.tar.bz2
/icecat-102.6.0-langpacks.tar.gz
/icecat-102.6.0-rh1.tar.bz2
/icecat-102.7.0-langpacks.tar.gz
/icecat-102.7.0-rh1.tar.bz2
/icecat-102.8.0-langpacks.tar.gz
/icecat-102.8.0-rh1.tar.bz2
/icecat-102.9.0-langpacks.tar.gz
/icecat-102.9.0-rh1.tar.bz2
/icecat-102.10.0-langpacks.tar.gz
/icecat-102.10.0-rh1.tar.bz2
/icecat-102.11.0-langpacks.tar.gz
/icecat-102.11.0-rh1.tar.bz2
/icecat-102.11.0-rh2.tar.bz2
/icecat-102.12.0-langpacks.tar.gz
/icecat-102.12.0-rh1.tar.bz2
/icecat-102.13.0-langpacks.tar.gz
/icecat-102.13.0-rh1.tar.bz2
/icecat-102.14.0-langpacks.tar.gz
/icecat-102.14.0-rh1.tar.bz2
/icecat-102.15.0-langpacks.tar.gz
/icecat-102.15.0-rh1.tar.bz2
/icecat-115.3.1-langpacks.tar.gz
/icecat-115.3.1-rh1.tar.bz2
/icecat-115.3.1-rh2.tar.bz2
/icecat-115.4.0-langpacks.tar.gz
/icecat-115.4.0-rh1.tar.bz2
/icecat-115.4.0-rh2.tar.bz2
/icecat-115.5.0-langpacks.tar.gz
/icecat-115.5.0-rh1.tar.bz2
/icecat-115.6.0-langpacks.tar.gz
/icecat-115.6.0-rh1.tar.bz2
/icecat-115.7.0-langpacks.tar.gz
/icecat-115.7.0-rh1.tar.bz2
/icecat-115.8.0-langpacks.tar.gz
/icecat-115.8.0-rh1.tar.bz2
/icecat-115.9.0-langpacks.tar.gz
/icecat-115.9.0-rh1.tar.bz2
/icecat-115.10.0-langpacks.tar.gz
/icecat-115.10.0-rh1.tar.bz2
/icecat-115.11.0-langpacks.tar.gz
/icecat-115.11.0-rh1.tar.bz2
/icecat-115.12.0-langpacks.tar.gz
/icecat-115.12.0-rh1.tar.bz2
/icecat-115.13.0-langpacks.tar.gz
/icecat-115.13.0-rh1.tar.bz2
/icecat-115.14.0-langpacks.tar.gz
/icecat-115.14.0-rh1.tar.bz2
/icecat-115.15.0-langpacks.tar.gz
/icecat-115.15.0-rh1.tar.bz2
/icecat-115.16.0-langpacks.tar.gz
/icecat-115.16.0-rh1.tar.bz2
/icecat-115.16.1-langpacks.tar.gz
/icecat-115.16.1-rh1.tar.bz2
/icecat-115.17.0-langpacks.tar.gz
/icecat-115.17.0-rh1.tar.bz2
/icecat-115.18.0-langpacks.tar.gz
/icecat-115.18.0-rh1.tar.bz2
/icecat-115.18.0-rh2.tar.bz2
/icecat-115.19.0-langpacks.tar.gz
/icecat-115.19.0-rh1.tar.bz2
/icecat-115.20.0-langpacks.tar.gz
/icecat-115.20.0-rh1.tar.bz2
/icecat-115.21.0-langpacks.tar.gz
/icecat-115.21.0-rh1.tar.bz2
/icecat-115.22.0-langpacks.tar.gz
/icecat-115.22.0-rh1.tar.bz2
/icecat-115.23.0-langpacks.tar.gz
/icecat-115.23.0-rh1.tar.bz2
/icecat-115.23.1-langpacks.tar.gz
/icecat-115.23.1-rh1.tar.bz2
/icecat-115.24.0-langpacks.tar.gz
/icecat-115.24.0-rh1.tar.bz2
/icecat-128.12.0-langpacks.tar.gz
/icecat-128.12.0-rh1.tar.bz2
/icecat-128.13.0-langpacks.tar.gz
/icecat-128.13.0-rh1.tar.bz2
/icecat-128.14.0-langpacks.tar.gz
/icecat-128.14.0-rh1.tar.bz2
/icecat-140.3.0-langpacks.tar.gz
/icecat-140.3.0-rh1.tar.bz2
/icecat-140.4.0-langpacks.tar.gz
/icecat-140.4.0-rh1.tar.bz2
/icecat-140.5.0-langpacks.tar.gz
/icecat-140.5.0-rh1.tar.bz2
/icecat-140.6.0-langpacks.tar.gz
/icecat-140.6.0-rh1.tar.bz2
/icecat-140.7.0-langpacks.tar.gz
/icecat-140.7.0-rh1.tar.bz2
/icecat-68.11.0-langpacks.tar.gz
/icecat-68.11.0-rh1.tar.bz2
/icecat-68.12.0-langpacks.tar.gz
/icecat-68.12.0-rh1.tar.bz2

View file

@ -0,0 +1,12 @@
diff -up firefox-60.0/mfbt/LinuxSignal.h.mozilla-1238661 firefox-60.0/mfbt/LinuxSignal.h
--- firefox-60.0/mfbt/LinuxSignal.h.mozilla-1238661 2018-04-27 08:55:38.848241768 +0200
+++ firefox-60.0/mfbt/LinuxSignal.h 2018-04-27 09:06:47.946769859 +0200
@@ -22,7 +22,7 @@
void* aContext) {
asm volatile("nop; nop; nop; nop" : : : "memory");
- asm volatile("b %0" : : "X"(H) : "memory");
+ asm volatile("bx %0" : : "r"(H), "l"(aSignal), "l"(aInfo), "l"(aContext) : "memory");
}
# define MOZ_SIGNAL_TRAMPOLINE(h) (mozilla::SignalTrampoline<h>)

View file

@ -1,41 +0,0 @@
[GNU IceCat](https://www.gnu.org/software/gnuzilla/) is the GNU version of the Firefox ESR browser.
Extensions included to this version of IceCat:
* LibreJS
GNU LibreJS aims to address the JavaScript problem described in the article
"[The JavaScript Trap](https://www.gnu.org/philosophy/javascript-trap.html)" of Richard Stallman.
* JShelter
Mitigates potential threats from JavaScript, including fingerprinting,
tracking, and data collection. Slightly modifies the results of API calls,
differently on different domains, so that the cross-site fingerprint is not
stable. Applies security counter-measures that are likely not to break web pages.
Allows fine-grained control over the restrictions and counter-measures applied
to each domain.
* A set of companion extensions for LibreJS by Nathan Nichols
are pre-installed, and provide workarounds to use some services at USPS,
RSF.org, SumOfUs.org, pay.gov, McDonalds, goteo.org and Google Docs
without using nonfree JavaScript.
* A series of configuration changes and tweaks were applied to ensure that
IceCat does not initiate network connections that the user has not explicitly
requested. This implies not downloading feeds, updates, blacklists or any
other similar data needed during startup.
Origin of the name
The name “IceCat” was coined to show our relationship to the Mozilla Firefox browser. Ice isn't Fire and a Cat isn't a Fox, so it is clearly a different package (we don't want Mozilla blamed for our mistakes, nor cause confusion with their trademarks), but is equally clearly intimately related (of course nearly all of the work comes from the Mozilla foundation effort, so we want to give credit).
The gNewSense BurningDog browser and the Debian IceWeasel browser are similarly derived from Firefox, also with the intent of being free software. Technically, however, these projects are maintained entirely independently of IceCat. (Previously, this GNU browser project was also named IceWeasel, but that proved confusing.)
About GNU and the GNU Philosophy
The [GNU Project](https://www.gnu.org/) was launched in 1984 to develop a complete Unix-like operating system which is [free software—free as in freedom, not price](https://www.gnu.org/philosophy/free-sw.html). Its principal sponsor is the [Free Software Foundation](https://www.fsf.org/).
The [free software philosophy](https://www.gnu.org/philosophy/philosophy.html) is the root and motivation of the guidelines and goals of the whole free software movement, a worldwide community.

46
build-aarch64-skia.patch Normal file
View file

@ -0,0 +1,46 @@
diff -up firefox-68.0/gfx/skia/skia/include/private/SkHalf.h.old firefox-68.0/gfx/skia/skia/include/private/SkHalf.h
--- firefox-68.0/gfx/skia/skia/include/private/SkHalf.h.old 2019-07-11 12:33:40.471936951 +0200
+++ firefox-68.0/gfx/skia/skia/include/private/SkHalf.h 2019-07-11 12:33:50.527913736 +0200
@@ -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-68.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h.old firefox-68.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h
--- firefox-68.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h.old 2019-07-11 12:39:08.694166900 +0200
+++ firefox-68.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h 2019-07-11 12:39:21.572136328 +0200
@@ -830,7 +830,7 @@ SI F from_half(U16 h) {
}
SI U16 to_half(F f) {
-#if defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
+#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);
#elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512)
diff -up firefox-68.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h.old firefox-68.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h
--- firefox-68.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h.old 2019-07-11 12:38:45.285222428 +0200
+++ firefox-68.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h 2019-07-11 12:38:57.414193679 +0200
@@ -163,7 +163,7 @@ SI F F_from_Half(U16 half) {
__attribute__((no_sanitize("unsigned-integer-overflow")))
#endif
SI U16 Half_from_F(F f) {
-#if defined(USING_NEON_F16C)
+#if 0 // defined(USING_NEON_F16C)
return (U16)vcvt_f16_f32(f);
#elif defined(__AVX512F__)
return (U16)_mm512_cvtps_ph((__m512 )f, _MM_FROUND_CUR_DIRECTION );

12
build-arm-libopus.patch Normal file
View 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"

View file

@ -0,0 +1,12 @@
diff -up firefox-65.0/toolkit/moz.configure.disable-elfhack firefox-65.0/toolkit/moz.configure
--- firefox-65.0/toolkit/moz.configure.disable-elfhack 2019-01-28 14:16:48.530345132 +0100
+++ firefox-65.0/toolkit/moz.configure 2019-01-28 14:18:03.231029682 +0100
@@ -1036,7 +1036,7 @@ with only_when('--enable-compile-environ
help='{Enable|Disable} elf hacks')
set_config('USE_ELF_HACK',
- depends_if('--enable-elf-hack')(lambda _: True))
+ depends_if('--enable-elf-hack')(lambda _: False))
@depends(check_build_environment)

View file

@ -1,19 +0,0 @@
diff -up firefox-84.0.2/security/certverifier/NSSCertDBTrustDomain.cpp.nss-hack firefox-84.0.2/security/certverifier/NSSCertDBTrustDomain.cpp
--- firefox-84.0.2/security/certverifier/NSSCertDBTrustDomain.cpp.nss-hack 2021-01-11 12:12:02.585514543 +0100
+++ firefox-84.0.2/security/certverifier/NSSCertDBTrustDomain.cpp 2021-01-11 12:47:50.345984582 +0100
@@ -1619,6 +1619,15 @@ SECStatus InitializeNSS(const nsACString
return srv;
}
+ /* Sets the NSS_USE_ALG_IN_ANY_SIGNATURE bit.
+ * does not change NSS_USE_ALG_IN_CERT_SIGNATURE,
+ * so policy will still disable use of sha1 in
+ * certificate related signature processing. */
+ srv = NSS_SetAlgorithmPolicy(SEC_OID_SHA1, NSS_USE_ALG_IN_ANY_SIGNATURE, 0);
+ if (srv != SECSuccess) {
+ NS_WARNING("Unable to use SHA1 for Add-ons, expect broken/disabled Add-ons. See https://bugzilla.redhat.com/show_bug.cgi?id=1908018 for details.");
+ }
+
if (nssDbConfig == NSSDBConfig::ReadWrite) {
UniquePK11SlotInfo slot(PK11_GetInternalKeySlot());
if (!slot) {

63
firefox-pipewire.patch Normal file
View file

@ -0,0 +1,63 @@
diff -up firefox-68.0/config/system-headers.mozbuild.firefox-pipewire firefox-68.0/config/system-headers.mozbuild
--- firefox-68.0/config/system-headers.mozbuild.firefox-pipewire 2019-07-01 22:30:26.000000000 +0200
+++ firefox-68.0/config/system-headers.mozbuild 2019-07-08 15:26:15.397161627 +0200
@@ -314,6 +314,7 @@ system_headers = [
'Gestalt.h',
'getopt.h',
'gio/gio.h',
+ 'gio/gunixfdlist.h',
'glibconfig.h',
'glib.h',
'glib-object.h',
@@ -607,6 +608,7 @@ system_headers = [
'Pgenerr.h',
'PGenErr.h',
'Ph.h',
+ 'pipewire/pipewire.h',
'pixman.h',
'pk11func.h',
'pk11pqg.h',
diff -up firefox-68.0/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build.firefox-pipewire firefox-68.0/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build
--- firefox-68.0/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build.firefox-pipewire 2019-07-01 22:30:33.000000000 +0200
+++ firefox-68.0/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build 2019-07-08 15:26:15.397161627 +0200
@@ -194,6 +194,28 @@ if CONFIG["OS_TARGET"] == "Linux":
"/media/webrtc/trunk/webrtc/modules/desktop_capture/window_capturer_linux.cc"
]
+# PipeWire specific files
+if CONFIG["OS_TARGET"] == "Linux":
+
+ DEFINES["WEBRTC_USE_PIPEWIRE"] = "1"
+
+ OS_LIBS += [
+ "rt",
+ "pipewire-0.2",
+ "glib-2.0",
+ "gio-2.0",
+ "gobject-2.0"
+ ]
+
+ CXXFLAGS += CONFIG['TK_CFLAGS']
+
+ UNIFIED_SOURCES += [
+ "/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc",
+ "/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc",
+ "/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc"
+ ]
+
+
if CONFIG["OS_TARGET"] == "NetBSD":
DEFINES["USE_X11"] = "1"
diff -up firefox-68.0/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h.firefox-pipewire firefox-68.0/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h
--- firefox-68.0/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h.firefox-pipewire 2019-07-08 16:42:13.936254926 +0200
+++ firefox-68.0/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h 2019-07-08 16:42:17.509264974 +0200
@@ -141,7 +141,7 @@ class DesktopCaptureOptions {
bool disable_effects_ = true;
bool detect_updated_region_ = false;
#if defined(WEBRTC_USE_PIPEWIRE)
- bool allow_pipewire_ = false;
+ bool allow_pipewire_ = true;
#endif
};

View file

@ -0,0 +1,12 @@
diff -up a/build/autoconf/icu.orig.m4 b/build/autoconf/icu.m4
--- a/build/autoconf/icu.orig.m4 2016-12-09 09:11:01.227317790 +0100
+++ b/build/autoconf/icu.m4 2016-12-09 09:18:40.608712247 +0100
@@ -78,7 +78,7 @@
# TODO: the l is actually endian-dependent
# We could make this set as 'l' or 'b' for little or big, respectively,
# but we'd need to check in a big-endian version of the file.
- ICU_DATA_FILE="icudt${version}l.dat"
+ ICU_DATA_FILE="icudt${version}b.dat"
fi
AC_SUBST(MOZ_ICU_VERSION)

View file

@ -0,0 +1,23 @@
diff --git a/js/src/wasm/WasmSignalHandlers.cpp b/js/src/wasm/WasmSignalHandlers.cpp
index 636537f847862ef693dd6582e2783de4e3d403c5..383c380f04ceb6a111dbfe9a046e3454a56e31b4 100644
--- a/js/src/wasm/WasmSignalHandlers.cpp
+++ b/js/src/wasm/WasmSignalHandlers.cpp
@@ -248,7 +248,16 @@ using mozilla::DebugOnly;
#endif
#ifdef WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS
-# include <sys/user.h>
+struct user_vfp {
+ unsigned long long fpregs[32];
+ unsigned long fpscr;
+};
+
+struct user_vfp_exc {
+ unsigned long fpexc;
+ unsigned long fpinst;
+ unsigned long fpinst2;
+};
#endif
#if defined(ANDROID)

View file

@ -1,45 +0,0 @@
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

View file

@ -0,0 +1,36 @@
# Fixes installation of those addons which don't have ID on IceCat ("Cannot find id for addon" error).
--- a/toolkit/mozapps/extensions/internal/XPIInstall.jsm
+++ b/toolkit/mozapps/extensions/internal/XPIInstall.jsm
@@ -627,8 +627,30 @@
throw new Error(`Extension is signed with an invalid id (${addon.id})`);
}
}
- if (!addon.id && aLocation.isTemporary) {
- addon.id = generateTemporaryInstallID(aPackage.file);
+ if (!addon.id) {
+ if (aInstallLocation.name == KEY_APP_TEMPORARY) {
+ addon.id = generateTemporaryInstallID(aZipReader.file);
+ } else {
+ try {
+ let sigInput = aZipReader.getInputStream("META-INF/cose.sig");
+ let sigBinary = Cc['@mozilla.org/binaryinputstream;1']
+ .createInstance(Ci.nsIBinaryInputStream);
+ sigBinary.setInputStream(sigInput);
+ var sig = ''
+ var sigCount;
+ while ((sigCount = sigBinary.available()) > 0) {
+ sig += sigBinary.readBytes(sigCount);
+ }
+ let sigMatch = sig.match(/\{\w{8}-\w{4}-\w{4}-\w{4}-\w{12}\}/g)
+ if (sigMatch && sigMatch.length == 1) {
+ addon.id = sigMatch[0]
+ } else {
+ logger.warn("Failed to find addon id");
+ }
+ } catch (e) {
+ logger.warn("Failed to process META-INF/cose.sig");
+ }
+ }
}
}

View file

@ -0,0 +1,32 @@
--- browser/installer/package-manifest.orig.in 2017-03-24 21:09:39.027022000 +0100
+++ browser/installer/package-manifest.in 2017-03-24 23:07:21.881504771 +0100
@@ -74,9 +74,9 @@
#endif
#ifndef MOZ_SYSTEM_NSPR
#ifndef MOZ_FOLD_LIBS
-@BINPATH@/@DLL_PREFIX@nspr4@DLL_SUFFIX@
-@BINPATH@/@DLL_PREFIX@plc4@DLL_SUFFIX@
-@BINPATH@/@DLL_PREFIX@plds4@DLL_SUFFIX@
+#@BINPATH@/@DLL_PREFIX@nspr4@DLL_SUFFIX@
+#@BINPATH@/@DLL_PREFIX@plc4@DLL_SUFFIX@
+#@BINPATH@/@DLL_PREFIX@plds4@DLL_SUFFIX@
#endif
#endif
#ifdef XP_MACOSX
@@ -610,11 +610,11 @@
@RESPATH@/chrome/recording.manifest
@RESPATH@/chrome/recording/*
#ifdef MOZ_GTK
-@RESPATH@/browser/chrome/icons/default/default16.png
-@RESPATH@/browser/chrome/icons/default/default32.png
-@RESPATH@/browser/chrome/icons/default/default48.png
-@RESPATH@/browser/chrome/icons/default/default64.png
-@RESPATH@/browser/chrome/icons/default/default128.png
+#@RESPATH@/browser/chrome/icons/default/default16.png
+#@RESPATH@/browser/chrome/icons/default/default32.png
+#@RESPATH@/browser/chrome/icons/default/default48.png
+@RESPATH@/browser/chrome/icons/default/default64.png
+@RESPATH@/browser/chrome/icons/default/default128.png
#endif
@RESPATH@/browser/features/*

11
icecat-fix_jar.patch Normal file
View file

@ -0,0 +1,11 @@
--- browser/locales/jar.orig.mn 2017-03-19 19:59:09.000000000 +0100
+++ browser/locales/jar.mn 2017-03-22 19:49:57.602190867 +0100
@@ -14,7 +14,7 @@
@AB_CD@.jar:
% locale browser @AB_CD@ %locale/browser/
# bookmarks.html is produced by LOCALIZED_GENERATED_FILES.
- locale/browser/bookmarks.html (bookmarks.html)
+ locale/browser/bookmarks.html (generic/profile/bookmarks.html.in)
locale/browser/accounts.properties (%chrome/browser/accounts.properties)
locale/browser/app-extension-fields.properties (%chrome/browser/app-extension-fields.properties)

View file

@ -1,14 +0,0 @@
diff -up firefox-114.0.2/gfx/wr/swgl/src/gl.cc.inline firefox-114.0.2/gfx/wr/swgl/src/gl.cc
--- firefox-114.0.2/gfx/wr/swgl/src/gl.cc.inline 2023-06-22 11:08:53.294593327 +0200
+++ firefox-114.0.2/gfx/wr/swgl/src/gl.cc 2023-06-22 11:12:43.663486734 +0200
@@ -58,9 +58,7 @@ WINBASEAPI BOOL WINAPI QueryPerformanceF
}
#else
-// GCC is slower when dealing with always_inline, especially in debug builds.
-// When using Clang, use always_inline more aggressively.
-# if defined(__clang__) || defined(NDEBUG)
+# if defined(__clang__) || defined (__GNUC__) || defined(NDEBUG)
# define ALWAYS_INLINE __attribute__((always_inline)) inline
# else
# define ALWAYS_INLINE inline

View file

@ -1,7 +1,8 @@
#!/bin/bash
VERSION=140.7.0
URL=https://ftp.mozilla.org/pub/firefox/releases/${VERSION}esr/linux-x86_64/xpi/
VERSION=68.12.0
#URL=https://ftp.mozilla.org/pub/firefox/releases/${VERSION}esr/linux-x86_64/xpi/
URL=https://archive.mozilla.org/pub/firefox/candidates/${VERSION}esr-candidates/build1/linux-x86_64/xpi/
for u in $URL; do
mkdir -p langpacks && pushd langpacks
@ -17,7 +18,6 @@ done
# mv "${FILE}" "${newfile}" ;
#done
#popd
rm -f icecat-*-langpacks.tar.gz
tar -zcvf icecat-${VERSION}-langpacks.tar.gz langpacks
rm -rf langpacks
exit 0

View file

@ -0,0 +1,20 @@
--- old-configure.orig.in 2019-03-02 21:49:16.000000000 +0100
+++ old-configure.in 2019-03-04 12:14:23.842685662 +0100
@@ -1715,7 +1715,7 @@
MOZ_SYSTEM_LIBEVENT=
elif test -z "$MOZ_SYSTEM_LIBEVENT"; then
CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
- LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
+ LDFLAGS="-L${LIBDIR} $LDFLAGS"
MOZ_CHECK_HEADER(event.h,
[if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
@@ -1724,7 +1724,7 @@
AC_CHECK_LIB(event, event_init,
[MOZ_SYSTEM_LIBEVENT=1
MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include"
- MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
+ MOZ_LIBEVENT_LIBS="-L${LIBDIR} -levent"],
[MOZ_SYSTEM_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=])
fi
CFLAGS=$_SAVE_CFLAGS

View file

@ -2,15 +2,17 @@
export BUILD_OFFICIAL=1
export MOZILLA_OFFICIAL=1
export MOZ_TELEMETRY_REPORTING=
export MOZ_TELEMETRY_REPORTING=1
mk_add_options BUILD_OFFICIAL=1
mk_add_options MOZILLA_OFFICIAL=1
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir
ac_add_options --without-wasm-sandboxed-libraries
ac_add_options --prefix="$PREFIX"
ac_add_options --libdir="$LIBDIR"
ac_add_options --enable-necko-wifi
ac_add_options --enable-startup-notification
ac_add_options --disable-updater
ac_add_options --enable-chrome-format=omni
ac_add_options --enable-release
# Workaround for mozbz#1341234
ac_add_options BINDGEN_CFLAGS="$(pkg-config nspr pixman-1 --cflags)"

23
icecat-wayland.desktop Normal file
View file

@ -0,0 +1,23 @@
[Desktop Entry]
Version=1.0
Name=GNU IceCat on Wayland
Comment=Browse the World Wide Web
GenericName=Web Browser
Keywords=Internet;WWW;Browser;Web;Explorer;
Exec=icecat-wayland --name icecat-wayland %u
Icon=icecat
Terminal=false
Type=Application
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall;
Categories=Network;WebBrowser;
StartupNotify=true
Name[en_US]=GNU IceCat on Wayland
Actions=new-window;new-private-window;
[Desktop Action new-window]
Name=Open a New Window
Exec=icecat-wayland --name icecat-wayland --new-window %u
[Desktop Action new-private-window]
Name=Open a New Private Window
Exec=icecat-wayland --private-window --name icecat-wayland %u

7
icecat-wayland.sh.in Normal file
View file

@ -0,0 +1,7 @@
#!/bin/bash
#
# Run GNU IceCat under Wayland
#
export MOZ_ENABLE_WAYLAND=1
exec /__PREFIX__/bin/icecat "$@"

338
icecat-x11.desktop Normal file
View file

@ -0,0 +1,338 @@
[Desktop Entry]
Version=1.0
Name=GNU IceCat on X11
Comment=Browse the World Wide Web
Comment[ar]=تصفح الشبكة العنكبوتية العالمية
Comment[ast]=Restola pela Rede
Comment[bn]=
Comment[ca]=Navegueu per la web
Comment[cs]=Prohlížení stránek World Wide Webu
Comment[da]=Surf på internettet
Comment[de]=Im Internet surfen
Comment[el]=Μπορείτε να περιηγηθείτε στο διαδίκτυο (Web)
Comment[es]=Navegue por la web
Comment[et]=Lehitse veebi
Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید
Comment[fi]=Selaa Internetin WWW-sivuja
Comment[fr]=Naviguer sur le Web
Comment[gl]=Navegar pola rede
Comment[he]=גלישה ברחבי האינטרנט
Comment[hr]=Pretražite web
Comment[hu]=A világháló böngészése
Comment[it]=Esplora il web
Comment[ja]=
Comment[ko]=
Comment[ku]=Li torê bigere
Comment[lt]=Naršykite internete
Comment[nb]=Surf på nettet
Comment[nl]=Verken het internet
Comment[nn]=Surf på nettet
Comment[no]=Surf på nettet
Comment[pl]=Przeglądanie stron WWW
Comment[pt]=Navegue na Internet
Comment[pt_BR]=Navegue na Internet
Comment[ro]=Navigați pe Internet
Comment[ru]=Доступ в Интернет
Comment[sk]=Prehliadanie internetu
Comment[sl]=Brskajte po spletu
Comment[sv]=Surfa på webben
Comment[tr]=İnternet'te Gezinin
Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ
Comment[uk]=Перегляд сторінок Інтернету
Comment[vi]=Đ duyt các trang web
Comment[zh_CN]=
Comment[zh_TW]=
GenericName=Web Browser
GenericName[ar]=متصفح ويب
GenericName[ast]=Restolador Web
GenericName[bn]=
GenericName[ca]=Navegador web
GenericName[cs]=Webový prohlížeč
GenericName[da]=Webbrowser
GenericName[el]=Περιηγητής διαδικτύου
GenericName[es]=Navegador web
GenericName[et]=Veebibrauser
GenericName[fa]=مرورگر اینترنتی
GenericName[fi]=WWW-selain
GenericName[fr]=Navigateur Web
GenericName[gl]=Navegador Web
GenericName[he]=דפדפן אינטרנט
GenericName[hr]=Web preglednik
GenericName[hu]=Webböngésző
GenericName[it]=Browser web
GenericName[ja]=
GenericName[ko]=
GenericName[ku]=Geroka torê
GenericName[lt]=Interneto naršyklė
GenericName[nb]=Nettleser
GenericName[nl]=Webbrowser
GenericName[nn]=Nettlesar
GenericName[no]=Nettleser
GenericName[pl]=Przeglądarka WWW
GenericName[pt]=Navegador Web
GenericName[pt_BR]=Navegador Web
GenericName[ro]=Navigator Internet
GenericName[ru]=Веб-браузер
GenericName[sk]=Internetový prehliadač
GenericName[sl]=Spletni brskalnik
GenericName[sv]=Webbläsare
GenericName[tr]=Web Tarayıcı
GenericName[ug]=توركۆرگۈ
GenericName[uk]=Веб-браузер
GenericName[vi]=Trình duyt Web
GenericName[zh_CN]=
GenericName[zh_TW]=
Keywords=Internet;WWW;Browser;Web;Explorer;
Keywords[ar]=انترنت;إنترنت;متصفح;ويب;وب;
Keywords[ast]=Internet;WWW;Restolador;Web;Esplorador;
Keywords[ca]=Internet;WWW;Navegador;Web;Explorador;Explorer;
Keywords[cs]=Internet;WWW;Prohlížeč;Web;Explorer;
Keywords[da]=Internet;Internettet;WWW;Browser;Browse;Web;Surf;Nettet;
Keywords[de]=Internet;WWW;Browser;Web;Explorer;Webseite;Site;surfen;online;browsen;
Keywords[el]=Internet;WWW;Browser;Web;Explorer;Διαδίκτυο;Περιηγητής;IceCat;Φιρεφοχ;Ιντερνετ;
Keywords[es]=Explorador;Internet;WWW;
Keywords[fi]=Internet;WWW;Browser;Web;Explorer;selain;Internet-selain;internetselain;verkkoselain;netti;surffaa;
Keywords[fr]=Internet;WWW;Browser;Web;Explorer;Fureteur;Surfer;Navigateur;
Keywords[he]=דפדפן;אינטרנט;רשת;אתרים;אתר;פיירפוקס;מוזילה;
Keywords[hr]=Internet;WWW;preglednik;Web;
Keywords[hu]=Internet;WWW;Böngésző;Web;Háló;Net;Explorer;
Keywords[it]=Internet;WWW;Browser;Web;Navigatore;
Keywords[is]=Internet;WWW;Vafri;Vefur;Netvafri;Flakk;
Keywords[ja]=Internet;WWW;Web;;;;;
Keywords[nb]=Internett;WWW;Nettleser;Explorer;Web;Browser;Nettside;
Keywords[nl]=Internet;WWW;Browser;Web;Explorer;Verkenner;Website;Surfen;Online;
Keywords[pt]=Internet;WWW;Browser;Web;Explorador;Navegador;
Keywords[pt_BR]=Internet;WWW;Browser;Web;Explorador;Navegador;
Keywords[ru]=Internet;WWW;Browser;Web;Explorer;интернет;браузер;веб;файрфокс;огнелис;
Keywords[sk]=Internet;WWW;Prehliadač;Web;Explorer;
Keywords[sl]=Internet;WWW;Browser;Web;Explorer;Brskalnik;Splet;
Keywords[tr]=İnternet;WWW;Tarayıcı;Web;Gezgin;Web sitesi;Site;sörf;çevrimiçi;tara;
Keywords[uk]=Internet;WWW;Browser;Web;Explorer;Інтернет;мережа;переглядач;оглядач;браузер;веб;файрфокс;вогнелис;перегляд;
Keywords[vi]=Internet;WWW;Browser;Web;Explorer;Trình duyt;Trang web;
Keywords[zh_CN]=Internet;WWW;Browser;Web;Explorer;;;;;IceCat;ff;;;
Keywords[zh_TW]=Internet;WWW;Browser;Web;Explorer;;;;;;;
Exec=icecat-x11 --name icecat-x11 %u
Icon=icecat
Terminal=false
Type=Application
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall;
Categories=Network;WebBrowser;
StartupNotify=true
Name[en_US]=GNU IceCat on X11
Actions=new-window;new-private-window;
[Desktop Action new-window]
Name=Open a New Window
Name[ach]=Dirica manyen
Name[af]=Nuwe venster
Name[an]=Nueva finestra
Name[ar]=نافذة جديدة
Name[as]=
Name[ast]=Ventana nueva
Name[az]=Yeni Pəncərə
Name[be]=Новае акно
Name[bg]=Нов прозорец
Name[bn-BD]= (N)
Name[bn-IN]=
Name[br]=Prenestr nevez
Name[brx]= '(N)
Name[bs]=Novi prozor
Name[ca]=Finestra nova
Name[cak]=K'ak'a' tzuwäch
Name[cs]=Nové okno
Name[cy]=Ffenestr Newydd
Name[da]=Nyt vindue
Name[de]=&#xad;Neues Fenster
Name[dsb]=Nowe wokno
Name[el]=Νέο παράθυρο
Name[en-GB]=New Window
Name[en-US]=New Window
Name[en-ZA]=New Window
Name[eo]=Nova fenestro
Name[es-AR]=Nueva ventana
Name[es-CL]=Nueva ventana
Name[es-ES]=Nueva ventana
Name[es-MX]=Nueva ventana
Name[et]=Uus aken
Name[eu]=Leiho berria
Name[fa]=پنجره جدید
Name[ff]=Henorde Hesere
Name[fi]=Uusi ikkuna
Name[fr]=&#xad;Nouvelle fenêtre
Name[fy-NL]=Nij finster
Name[ga-IE]=Fuinneog Nua
Name[gd]=Uinneag ùr
Name[gl]=Nova xanela
Name[gn]=Ovetã pyahu
Name[gu-IN]= િ
Name[he]=חלון חדש
Name[hi-IN]= ि
Name[hr]=Novi prozor
Name[hsb]=Nowe wokno
Name[hu]=Új ablak
Name[hy-AM]=Նոր Պատուհան
Name[id]=Jendela Baru
Name[is]=Nýr gluggi
Name[it]=Nuova finestra&#173;
Name[ja]=
Name[ja-JP-mac]=
Name[ka]=
Name[kk]=Жаңа терезе
Name[km]=
Name[kn]= ಿಿ
Name[ko]=
Name[kok]=
Name[ks]=نئئ وِنڈو
Name[lij]=Neuvo barcon
Name[lo]=
Name[lt]=Naujas langas
Name[ltg]=Jauns lūgs
Name[lv]=Jauns logs
Name[mai]= ि
Name[mk]=Нов прозорец
Name[ml]=ി
Name[mr]=
Name[ms]=Tetingkap Baru
Name[my]=
Name[nb-NO]=Nytt vindu
Name[ne-NP]=
Name[nl]=Nieuw venster
Name[nn-NO]=Nytt vindauge
Name[or]= ି
Name[pa-IN]= ਿ
Name[pl]=Nowe okno
Name[pt-BR]=Nova janela
Name[pt-PT]=Nova janela
Name[rm]=Nova fanestra
Name[ro]=Fereastră nouă
Name[ru]=Новое окно
Name[sat]= ि (N)
Name[si]=
Name[sk]=Nové okno
Name[sl]=Novo okno
Name[son]=Zanfun taaga
Name[sq]=Dritare e Re
Name[sr]=Нови прозор
Name[sv-SE]=Nytt fönster
Name[ta]=ி
Name[te]= ి
Name[th]=
Name[tr]=Yeni pencere
Name[tsz]=Eraatarakua jimpani
Name[uk]=Нове вікно
Name[ur]=نیا دریچہ
Name[uz]=Yangi oyna
Name[vi]=Ca s mi
Name[wo]=Palanteer bu bees
Name[xh]=Ifestile entsha
Name[zh-CN]=
Name[zh-TW]=
Exec=icecat --new-window %u
[Desktop Action new-private-window]
Name=Open a New Private Window
Name[ach]=Dirica manyen me mung
Name[af]=Nuwe privaatvenster
Name[an]=Nueva finestra privada
Name[ar]=نافذة خاصة جديدة
Name[as]= ি
Name[ast]=Ventana privada nueva
Name[az]=Yeni Məxfi Pəncərə
Name[be]=Новае акно адасаблення
Name[bg]=Нов прозорец за поверително сърфиране
Name[bn-BD]= ি
Name[bn-IN]= ি
Name[br]=Prenestr merdeiñ prevez nevez
Name[brx]= '
Name[bs]=Novi privatni prozor
Name[ca]=Finestra privada nova
Name[cak]=K'ak'a' ichinan tzuwäch
Name[cs]=Nové anonymní okno
Name[cy]=Ffenestr Breifat Newydd
Name[da]=Nyt privat vindue
Name[de]=Neues privates Fenster
Name[dsb]=Nowe priwatne wokno
Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης
Name[en-GB]=New Private Window
Name[en-US]=New Private Window
Name[en-ZA]=New Private Window
Name[eo]=Nova privata fenestro
Name[es-AR]=Nueva ventana privada
Name[es-CL]=Nueva ventana privada
Name[es-ES]=Nueva ventana privada
Name[es-MX]=Nueva ventana privada
Name[et]=Uus privaatne aken
Name[eu]=Leiho pribatu berria
Name[fa]=پنجره ناشناس جدید
Name[ff]=Henorde Suturo Hesere
Name[fi]=Uusi yksityinen ikkuna
Name[fr]=Nouvelle fenêtre de navigation privée
Name[fy-NL]=Nij priveefinster
Name[ga-IE]=Fuinneog Nua Phríobháideach
Name[gd]=Uinneag phrìobhaideach ùr
Name[gl]=Nova xanela privada
Name[gn]=Ovetã ñemi pyahu
Name[gu-IN]= િ
Name[he]=חלון פרטי חדש
Name[hi-IN]= ि ि
Name[hr]=Novi privatni prozor
Name[hsb]=Nowe priwatne wokno
Name[hu]=Új privát ablak
Name[hy-AM]=Սկսել Գաղտնի դիտարկում
Name[id]=Jendela Mode Pribadi Baru
Name[is]=Nýr huliðsgluggi
Name[it]=Nuova finestra anonima
Name[ja]=
Name[ja-JP-mac]=
Name[ka]=
Name[kk]=Жаңа жекелік терезе
Name[km]=
Name[kn]= ಿ ಿಿ
Name[ko]=
Name[kok]= ि
Name[ks]=نْو پرایوٹ وینڈو&amp;
Name[lij]=Neuvo barcon privou
Name[lo]=
Name[lt]=Naujas privataus naršymo langas
Name[ltg]=Jauns privatais lūgs
Name[lv]=Jauns privātais logs
Name[mai]= ि ि (W)
Name[mk]=Нов приватен прозорец
Name[ml]=ി
Name[mr]= ि
Name[ms]=Tetingkap Persendirian Baharu
Name[my]=New Private Window
Name[nb-NO]=Nytt privat vindu
Name[ne-NP]= ि
Name[nl]=Nieuw privévenster
Name[nn-NO]=Nytt privat vindauge
Name[or]= ି ି
Name[pa-IN]= ਿ
Name[pl]=Nowe okno prywatne
Name[pt-BR]=Nova janela privativa
Name[pt-PT]=Nova janela privada
Name[rm]=Nova fanestra privata
Name[ro]=Fereastră privată nouă
Name[ru]=Новое приватное окно
Name[sat]= ि ि (W )
Name[si]= (W)
Name[sk]=Nové okno v režime Súkromné prehliadanie
Name[sl]=Novo zasebno okno
Name[son]=Sutura zanfun taaga
Name[sq]=Dritare e Re Private
Name[sr]=Нови приватан прозор
Name[sv-SE]=Nytt privat fönster
Name[ta]=ி ி
Name[te]= ి ి
Name[th]=
Name[tr]=Yeni gizli pencere
Name[tsz]=Juchiiti eraatarakua jimpani
Name[uk]=Приватне вікно
Name[ur]=نیا نجی دریچہ
Name[uz]=Yangi maxfiy oyna
Name[vi]=Ca s riêng tư mi
Name[wo]=Panlanteeru biir bu bees
Name[xh]=Ifestile yangasese entsha
Name[zh-CN]=
Name[zh-TW]=
Exec=icecat --private-window %u

7
icecat-x11.sh.in Normal file
View file

@ -0,0 +1,7 @@
#!/bin/bash
#
# Run GNU IceCat on X11 backend
#
export MOZ_DISABLE_WAYLAND=1
exec /__PREFIX__/bin/icecat "$@"

View file

@ -11,7 +11,7 @@
</categories>
<description>
<p>
GNU IceCat is the GNU version of the Firefox ESR browser.
GNUZilla Icecat is a fully-free fork of Mozilla Firefox ESR browser.
</p>
<p>
Its main advantage is an ethical one: it is entirely free software:
@ -33,6 +33,14 @@
HTTPS Everywhere is an extension that encrypts your communications with many major websites, making your browsing more secure
</li>
<li>
Onion Browser Button
Easily browse the internet using TOR proxy with just one click
</li>
<li>
ViewTube
Watch videos from video sharing websites with extra options
</li>
<li>
A set of companion extensions for LibreJS by Nathan Nichols (https://addons.mozilla.org/en-US/firefox/user/NateN1222/)
are pre-installed, and provide workarounds to use some services at USPS, RSF.org, SumOfUs.org, pay.gov, McDonald's, goteo.org
and Google Docs without using nonfree JavaScript.
@ -47,16 +55,16 @@
<url type="homepage">http://www.gnu.org/software/gnuzilla/</url>
<screenshots>
<screenshot type="default">
<image>https://sagitter.fedorapeople.org/icecat/icecat-screenshots/icecat1021.png</image>
<image>https://sagitter.fedorapeople.org/icecat/icecat-screenshots/icecat681.png</image>
</screenshot>
<screenshot>
<image>https://sagitter.fedorapeople.org/icecat/icecat-screenshots/icecat1022.png</image>
<image>https://sagitter.fedorapeople.org/icecat/icecat-screenshots/icecat682.png</image>
</screenshot>
<screenshot>
<image>https://sagitter.fedorapeople.org/icecat/icecat-screenshots/icecat1023.png</image>
<image>https://sagitter.fedorapeople.org/icecat/icecat-screenshots/icecat683.png</image>
</screenshot>
<screenshot>
<image>https://sagitter.fedorapeople.org/icecat/icecat-screenshots/icecat1024.png</image>
<image>https://sagitter.fedorapeople.org/icecat/icecat-screenshots/icecat684.png</image>
</screenshot>
</screenshots>
<updatecontact>sagitter_at_fedoraproject.org</updatecontact>

11
icecat.metainfo.xml Normal file
View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="addon">
<id>mozilla-requestpolicy</id>
<extends>icecat.desktop</extends>
<name>mozilla-requestpolicy</name>
<summary>Extension that gives you control over cross-site requests</summary>
<url type="homepage">https://requestpolicycontinued.github.io/</url>
<url type="bugtracker">https://github.com/requestpolicycontinued/requestpolicy/issues</url>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-3.0+ and LGPL-3.0+</project_license>
</component>

View file

@ -39,12 +39,12 @@ cmdname=`basename $0`
MOZ_ARCH=$(uname -m)
case $MOZ_ARCH in
x86_64 | s390x | sparc64)
MOZ_LIB_DIR="/__PREFIX__/lib64"
SECONDARY_LIB_DIR="/__PREFIX__/lib"
MOZ_LIB_DIR="/usr/lib64"
SECONDARY_LIB_DIR="/usr/lib"
;;
* )
MOZ_LIB_DIR="/__PREFIX__/lib"
SECONDARY_LIB_DIR="/__PREFIX__/lib64"
MOZ_LIB_DIR="/usr/lib"
SECONDARY_LIB_DIR="/usr/lib64"
;;
esac
@ -64,35 +64,22 @@ MOZ_DIST_BIN="$MOZ_LIB_DIR/icecat"
MOZ_LANGPACKS_DIR="$MOZ_DIST_BIN/langpacks"
MOZ_EXTENSIONS_PROFILE_DIR="$HOME/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
MOZ_PROGRAM="$MOZ_DIST_BIN/$MOZ_FIREFOX_FILE"
MOZ_LAUNCHER="$MOZ_DIST_BIN/icecat"
GETENFORCE_FILE="/usr/sbin/getenforce"
MOZ_LAUNCHER="$MOZ_DIST_BIN/run-icecat.sh"
##
## Enable Wayland backend?
## Enable X11 backend by default?
##
if ! [ $MOZ_DISABLE_WAYLAND ] && [ "$WAYLAND_DISPLAY" ]; then
if __DEFAULT_WAYLAND__ && ! [ $MOZ_DISABLE_WAYLAND ]; then
if [ "$XDG_CURRENT_DESKTOP" == "GNOME" ]; then
export MOZ_ENABLE_WAYLAND=1
fi
## Enable Wayland on KDE/Sway
##
if [ "$XDG_SESSION_TYPE" == "wayland" ]; then
export MOZ_ENABLE_WAYLAND=1
fi
fi
##
## Use D-Bus remote exclusively when there's Wayland display.
##
if [ "$WAYLAND_DISPLAY" ]; then
export MOZ_DBUS_REMOTE=1
fi
##
## Set MOZ_GRE_CONF
##
MOZ_GRE_CONF=/etc/gre.d/gre.conf
if [ "$MOZ_LIB_DIR" == "/__PREFIX__/lib64" ]; then
if [ "$MOZ_LIB_DIR" == "/usr/lib64" ]; then
MOZ_GRE_CONF=/etc/gre.d/gre64.conf
fi
export MOZ_GRE_CONF
@ -181,19 +168,11 @@ MOZILLA_DOWN=0
if ! [ $MOZ_DISABLE_LANGPACKS ] || [ $MOZ_DISABLE_LANGPACKS -eq 0 ]; then
if [ -x $MOZ_DIST_BIN/$MOZ_FIREFOX_FILE ]; then
# Is icecat running?
/__PREFIX__/pidof icecat > /dev/null 2>&1
/usr/bin/pidof icecat > /dev/null 2>&1
MOZILLA_DOWN=$?
fi
fi
# When IceCat is not running, restore SELinux labels for profile files
# (rhbz#1731371)
if [ $MOZILLA_DOWN -ne 0 ]; then
if [ -x $GETENFORCE_FILE ] && [ `getenforce` != "Disabled" ]; then
(restorecon -vr ~/.mozilla/icecat/* &)
fi
fi
# Modify language pack configuration only when icecat is not running
# and language packs are not disabled
if [ $MOZILLA_DOWN -ne 0 ]; then
@ -213,8 +192,8 @@ if [ $MOZILLA_DOWN -ne 0 ]; then
CURRENT_LOCALE=${CURRENT_LOCALE:-$LANG}
# Try with a local variant first, then without a local variant
SHORTMOZLOCALE=`echo $CURRENT_LOCALE | sed "s|_\([^.]*\).*||g" | sed "s|\..*||g"`
MOZLOCALE=`echo $CURRENT_LOCALE | sed "s|_\([^.]*\).*|-\1|g" | sed "s|\..*||g"`
SHORTMOZLOCALE=`echo $CURRENT_LOCALE | sed "s|_\([^.]*\).*||g"`
MOZLOCALE=`echo $CURRENT_LOCALE | sed "s|_\([^.]*\).*|-\1|g"`
function create_langpack_link() {
local language=$*
@ -269,11 +248,13 @@ do
;;
esac
done
## Allow downgrade because during distro upgrade the build time can be
## older in newer version than the previous one.
##
export MOZ_ALLOW_DOWNGRADE=1
# Run the browser
debugging=0
if [ $debugging = 1 ]
then
echo $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@"
fi
exec $MOZ_PROGRAM "$@"
exec $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@"

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,7 @@
--- a/js/xpconnect/src/XPCWrappedNative.cpp.1512162 2019-07-17 22:51:30.000000000 +0200
+++ b/js/xpconnect/src/XPCWrappedNative.cpp 2019-07-25 08:08:18.512528313 +0200
@@ -1055,7 +1055,7 @@
diff -up firefox-68.0.1/js/xpconnect/src/XPCWrappedNative.cpp.1512162 firefox-68.0.1/js/xpconnect/src/XPCWrappedNative.cpp
--- firefox-68.0.1/js/xpconnect/src/XPCWrappedNative.cpp.1512162 2019-07-17 22:51:30.000000000 +0200
+++ firefox-68.0.1/js/xpconnect/src/XPCWrappedNative.cpp 2019-07-25 08:08:18.512528313 +0200
@@ -1092,7 +1092,7 @@ class MOZ_STACK_CLASS CallMethodHelper f
MOZ_ALWAYS_INLINE bool GetOutParamSource(uint8_t paramIndex,
MutableHandleValue srcp) const;
@ -9,7 +10,7 @@
MOZ_ALWAYS_INLINE bool QueryInterfaceFastPath();
@@ -1102,7 +1102,7 @@
@@ -1139,7 +1139,7 @@ class MOZ_STACK_CLASS CallMethodHelper f
~CallMethodHelper();
@ -18,3 +19,25 @@
// Trace implementation so we can put our CallMethodHelper in a Rooted<T>.
void trace(JSTracer* aTrc);
@@ -1157,6 +1157,10 @@ bool XPCWrappedNative::CallMethod(XPCCal
return helper.get().Call();
}
+#if (__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN)
+// Work around a compiler bug on ppc64le (bug 1512162).
+__attribute__ ((noinline,noclone))
+#endif
bool CallMethodHelper::Call() {
mCallContext.SetRetVal(JS::UndefinedValue());
@@ -1315,6 +1319,10 @@ bool CallMethodHelper::GetOutParamSource
return true;
}
+#if (__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN)
+// Work around a compiler bug on ppc64le (bug 1512162).
+__attribute__ ((noinline,noclone))
+#endif
bool CallMethodHelper::GatherAndConvertResults() {
// now we iterate through the native params to gather and convert results
uint8_t paramCount = mMethodInfo->GetParamCount();

34
mozilla-1548475.patch Normal file
View file

@ -0,0 +1,34 @@
diff --git a/dom/plugins/base/nsPluginHost.cpp b/dom/plugins/base/nsPluginHost.cpp
--- a/dom/plugins/base/nsPluginHost.cpp
+++ b/dom/plugins/base/nsPluginHost.cpp
@@ -105,6 +105,10 @@
# include "windows.h"
# include "winbase.h"
#endif
+#if (MOZ_WIDGET_GTK)
+# include <gdk/gdk.h>
+# include <gdk/gdkx.h>
+#endif
#include "npapi.h"
@@ -358,9 +362,15 @@
mOverrideInternalTypes =
Preferences::GetBool("plugin.override_internal_types", false);
- mPluginsDisabled = Preferences::GetBool("plugin.disable", false);
-
- Preferences::AddStrongObserver(this, "plugin.disable");
+ bool waylandBackend = false;
+#if MOZ_WIDGET_GTK
+ waylandBackend = !GDK_IS_X11_DISPLAY(gdk_display_get_default());
+#endif
+ mPluginsDisabled =
+ Preferences::GetBool("plugin.disable", false) || waylandBackend;
+ if (!waylandBackend) {
+ Preferences::AddStrongObserver(this, "plugin.disable");
+ }
nsCOMPtr<nsIObserverService> obsService =
mozilla::services::GetObserverService();

141
mozilla-1562827.patch Normal file
View file

@ -0,0 +1,141 @@
diff -up firefox-69.0/widget/gtk/nsWindow.cpp.mozilla-1562827 firefox-69.0/widget/gtk/nsWindow.cpp
--- firefox-69.0/widget/gtk/nsWindow.cpp.mozilla-1562827 2019-09-02 15:16:15.031528276 +0200
+++ firefox-69.0/widget/gtk/nsWindow.cpp 2019-09-02 15:16:15.037528254 +0200
@@ -818,7 +818,6 @@ void nsWindow::SetParent(nsIWidget* aNew
if (mParent) {
mParent->RemoveChild(this);
}
-
mParent = aNewParent;
GtkWidget* oldContainer = GetMozContainerWidget();
@@ -830,88 +829,73 @@ void nsWindow::SetParent(nsIWidget* aNew
return;
}
+ nsWindow* newParent = static_cast<nsWindow*>(aNewParent);
+ GdkWindow* newParentWindow = nullptr;
+ GtkWidget* newContainer = nullptr;
if (aNewParent) {
aNewParent->AddChild(this);
- ReparentNativeWidget(aNewParent);
+ newParentWindow = newParent->mGdkWindow;
+ newContainer = newParent->GetMozContainerWidget();
} else {
// aNewParent is nullptr, but reparent to a hidden window to avoid
// destroying the GdkWindow and its descendants.
// An invisible container widget is needed to hold descendant
// GtkWidgets.
- GtkWidget* newContainer = EnsureInvisibleContainer();
- GdkWindow* newParentWindow = gtk_widget_get_window(newContainer);
- ReparentNativeWidgetInternal(aNewParent, newContainer, newParentWindow,
- oldContainer);
- }
-}
-
-bool nsWindow::WidgetTypeSupportsAcceleration() { return !IsSmallPopup(); }
-
-void nsWindow::ReparentNativeWidget(nsIWidget* aNewParent) {
- MOZ_ASSERT(aNewParent, "null widget");
- NS_ASSERTION(!mIsDestroyed, "");
- NS_ASSERTION(!static_cast<nsWindow*>(aNewParent)->mIsDestroyed, "");
-
- GtkWidget* oldContainer = GetMozContainerWidget();
- if (!oldContainer) {
- // The GdkWindows have been destroyed so there is nothing else to
- // reparent.
- MOZ_ASSERT(gdk_window_is_destroyed(mGdkWindow),
- "live GdkWindow with no widget");
- return;
+ newContainer = EnsureInvisibleContainer();
+ newParentWindow = gtk_widget_get_window(newContainer);
}
- MOZ_ASSERT(!gdk_window_is_destroyed(mGdkWindow),
- "destroyed GdkWindow with widget");
- auto* newParent = static_cast<nsWindow*>(aNewParent);
- GdkWindow* newParentWindow = newParent->mGdkWindow;
- GtkWidget* newContainer = newParent->GetMozContainerWidget();
- GtkWindow* shell = GTK_WINDOW(mShell);
-
- if (shell && gtk_window_get_transient_for(shell)) {
- GtkWindow* topLevelParent =
- GTK_WINDOW(gtk_widget_get_toplevel(newContainer));
- gtk_window_set_transient_for(shell, topLevelParent);
- }
-
- ReparentNativeWidgetInternal(aNewParent, newContainer, newParentWindow,
- oldContainer);
-}
-
-void nsWindow::ReparentNativeWidgetInternal(nsIWidget* aNewParent,
- GtkWidget* aNewContainer,
- GdkWindow* aNewParentWindow,
- GtkWidget* aOldContainer) {
- if (!aNewContainer) {
+ if (!newContainer) {
// The new parent GdkWindow has been destroyed.
- MOZ_ASSERT(!aNewParentWindow || gdk_window_is_destroyed(aNewParentWindow),
+ MOZ_ASSERT(!newParentWindow || gdk_window_is_destroyed(newParentWindow),
"live GdkWindow with no widget");
Destroy();
} else {
- if (aNewContainer != aOldContainer) {
- MOZ_ASSERT(!gdk_window_is_destroyed(aNewParentWindow),
+ if (newContainer != oldContainer) {
+ MOZ_ASSERT(!gdk_window_is_destroyed(newParentWindow),
"destroyed GdkWindow with widget");
- SetWidgetForHierarchy(mGdkWindow, aOldContainer, aNewContainer);
+ SetWidgetForHierarchy(mGdkWindow, oldContainer, newContainer);
- if (aOldContainer == gInvisibleContainer) {
+ if (oldContainer == gInvisibleContainer) {
CheckDestroyInvisibleContainer();
}
}
- if (!mIsTopLevel) {
- gdk_window_reparent(mGdkWindow, aNewParentWindow,
- DevicePixelsToGdkCoordRoundDown(mBounds.x),
- DevicePixelsToGdkCoordRoundDown(mBounds.y));
- }
+ gdk_window_reparent(mGdkWindow, newParentWindow,
+ DevicePixelsToGdkCoordRoundDown(mBounds.x),
+ DevicePixelsToGdkCoordRoundDown(mBounds.y));
+ mToplevelParentWindow = GTK_WINDOW(gtk_widget_get_toplevel(newContainer));
}
- auto* newParent = static_cast<nsWindow*>(aNewParent);
bool parentHasMappedToplevel = newParent && newParent->mHasMappedToplevel;
if (mHasMappedToplevel != parentHasMappedToplevel) {
SetHasMappedToplevel(parentHasMappedToplevel);
}
}
+bool nsWindow::WidgetTypeSupportsAcceleration() { return !IsSmallPopup(); }
+
+void nsWindow::ReparentNativeWidget(nsIWidget* aNewParent) {
+ MOZ_ASSERT(aNewParent, "null widget");
+ MOZ_ASSERT(!mIsDestroyed, "");
+ MOZ_ASSERT(!static_cast<nsWindow*>(aNewParent)->mIsDestroyed, "");
+ MOZ_ASSERT(!gdk_window_is_destroyed(mGdkWindow),
+ "destroyed GdkWindow with widget");
+
+ MOZ_ASSERT(
+ !mParent,
+ "nsWindow::ReparentNativeWidget() works on toplevel windows only.");
+
+ auto* newParent = static_cast<nsWindow*>(aNewParent);
+ GtkWindow* newParentWidget = GTK_WINDOW(newParent->GetGtkWidget());
+ GtkWindow* shell = GTK_WINDOW(mShell);
+
+ if (shell && gtk_window_get_transient_for(shell)) {
+ gtk_window_set_transient_for(shell, newParentWidget);
+ mToplevelParentWindow = newParentWidget;
+ }
+}
+
void nsWindow::SetModal(bool aModal) {
LOG(("nsWindow::SetModal [%p] %d\n", (void*)this, aModal));
if (mIsDestroyed) return;
diff -up firefox-69.0/widget/gtk/nsWindow.h.mozilla-1562827 firefox-69.0/widget/gtk/nsWindow.h

184
mozilla-1564873.patch Normal file
View file

@ -0,0 +1,184 @@
# HG changeset patch
# User Emilio Cobos Álvarez <emilio@crisal.io>
# Date 1574168632 0
# Node ID 82e4062e839a57c0dbcb08df9965883c162eb8d1
# Parent ff37a98047d63550c77052e7dfecbda14b188e0d
Bug 1564873 - Fix straight-forward uses of mem::uninitialized in webrender. r=nical
Differential Revision: https://phabricator.services.mozilla.com/D53359
diff --git a/gfx/wr/webrender/src/platform/unix/font.rs b/gfx/wr/webrender/src/platform/unix/font.rs
--- a/gfx/wr/webrender/src/platform/unix/font.rs
+++ b/gfx/wr/webrender/src/platform/unix/font.rs
@@ -530,26 +530,26 @@ impl FontContext {
// Get the bounding box for a glyph, accounting for sub-pixel positioning.
fn get_bounding_box(
&self,
slot: FT_GlyphSlot,
font: &FontInstance,
glyph: &GlyphKey,
scale: f32,
) -> FT_BBox {
- let mut cbox: FT_BBox = unsafe { mem::uninitialized() };
+ // Get the estimated bounding box from FT (control points).
+ let mut cbox = FT_BBox { xMin: 0, yMin: 0, xMax: 0, yMax: 0 };
- // Get the estimated bounding box from FT (control points).
unsafe {
FT_Outline_Get_CBox(&(*slot).outline, &mut cbox);
+ }
- // For spaces and other non-printable characters, early out.
- if (*slot).outline.n_contours == 0 {
- return cbox;
- }
+ // For spaces and other non-printable characters, early out.
+ if unsafe { (*slot).outline.n_contours } == 0 {
+ return cbox;
}
self.pad_bounding_box(font, &mut cbox);
// Offset the bounding box by subpixel positioning.
// Convert to 26.6 fixed point format for FT.
let (dx, dy) = font.get_subpx_offset(glyph);
let (dx, dy) = (
@@ -713,17 +713,17 @@ impl FontContext {
(dx / scale as f64 * 64.0 + 0.5) as FT_Pos,
-(dy / scale as f64 * 64.0 + 0.5) as FT_Pos,
);
// Move the outline curves to be at the origin, taking
// into account the subpixel positioning.
unsafe {
let outline = &(*slot).outline;
- let mut cbox: FT_BBox = mem::uninitialized();
+ let mut cbox = FT_BBox { xMin: 0, yMin: 0, xMax: 0, yMax: 0 };
FT_Outline_Get_CBox(outline, &mut cbox);
self.pad_bounding_box(font, &mut cbox);
FT_Outline_Translate(
outline,
dx - ((cbox.xMin + dx) & !63),
dy - ((cbox.yMin + dy) & !63),
);
}
diff --git a/gfx/wr/webrender/src/prim_store/gradient.rs b/gfx/wr/webrender/src/prim_store/gradient.rs
--- a/gfx/wr/webrender/src/prim_store/gradient.rs
+++ b/gfx/wr/webrender/src/prim_store/gradient.rs
@@ -18,7 +18,7 @@
use crate::prim_store::{PrimKeyCommonData, PrimTemplateCommonData, PrimitiveStore};
use crate::prim_store::{NinePatchDescriptor, PointKey, SizeKey, InternablePrimitive};
use crate::render_task::RenderTaskCacheEntryHandle;
-use std::{hash, ops::{Deref, DerefMut}, mem};
+use std::{hash, ops::{Deref, DerefMut}};
use crate::util::pack_as_float;
/// The maximum number of stops a gradient may have to use the fast path.
@@ -575,22 +575,32 @@ pub const GRADIENT_DATA_TABLE_BEGIN: usi
// The exclusive bound of the gradient data table
pub const GRADIENT_DATA_TABLE_END: usize = GRADIENT_DATA_LAST_STOP;
// The number of entries in the gradient data table.
pub const GRADIENT_DATA_TABLE_SIZE: usize = 128;
// The number of entries in a gradient data: GRADIENT_DATA_TABLE_SIZE + first stop entry + last stop entry
pub const GRADIENT_DATA_SIZE: usize = GRADIENT_DATA_TABLE_SIZE + 2;
-#[derive(Debug)]
+/// An entry in a gradient data table representing a segment of the gradient
+/// color space.
+#[derive(Debug, Copy, Clone)]
#[repr(C)]
-// An entry in a gradient data table representing a segment of the gradient color space.
-pub struct GradientDataEntry {
- pub start_color: PremultipliedColorF,
- pub end_color: PremultipliedColorF,
+struct GradientDataEntry {
+ start_color: PremultipliedColorF,
+ end_color: PremultipliedColorF,
+}
+
+impl GradientDataEntry {
+ fn white() -> Self {
+ Self {
+ start_color: PremultipliedColorF::WHITE,
+ end_color: PremultipliedColorF::WHITE,
+ }
+ }
}
// TODO(gw): Tidy this up to be a free function / module?
struct GradientGpuBlockBuilder {}
impl GradientGpuBlockBuilder {
/// Generate a color ramp filling the indices in [start_idx, end_idx) and interpolating
/// from start_color to end_color.
@@ -657,17 +667,17 @@ impl GradientGpuBlockBuilder {
// within the segment of the gradient space represented by that entry. To lookup a gradient result,
// first the entry index is calculated to determine which two colors to interpolate between, then
// the offset within that entry bucket is used to interpolate between the two colors in that entry.
// This layout preserves hard stops, as the end color for a given entry can differ from the start
// color for the following entry, despite them being adjacent. Colors are stored within in BGRA8
// format for texture upload. This table requires the gradient color stops to be normalized to the
// range [0, 1]. The first and last entries hold the first and last color stop colors respectively,
// while the entries in between hold the interpolated color stop values for the range [0, 1].
- let mut entries: [GradientDataEntry; GRADIENT_DATA_SIZE] = unsafe { mem::uninitialized() };
+ let mut entries = [GradientDataEntry::white(); GRADIENT_DATA_SIZE];
if reverse_stops {
// Fill in the first entry (for reversed stops) with the first color stop
GradientGpuBlockBuilder::fill_colors(
GRADIENT_DATA_LAST_STOP,
GRADIENT_DATA_LAST_STOP + 1,
&cur_color,
&cur_color,
@@ -692,23 +702,16 @@ impl GradientGpuBlockBuilder {
);
cur_idx = next_idx;
}
cur_color = next_color;
}
if cur_idx != GRADIENT_DATA_TABLE_BEGIN {
error!("Gradient stops abruptly at {}, auto-completing to white", cur_idx);
- GradientGpuBlockBuilder::fill_colors(
- GRADIENT_DATA_TABLE_BEGIN,
- cur_idx,
- &PremultipliedColorF::WHITE,
- &cur_color,
- &mut entries,
- );
}
// Fill in the last entry (for reversed stops) with the last color stop
GradientGpuBlockBuilder::fill_colors(
GRADIENT_DATA_FIRST_STOP,
GRADIENT_DATA_FIRST_STOP + 1,
&cur_color,
&cur_color,
@@ -742,23 +745,16 @@ impl GradientGpuBlockBuilder {
);
cur_idx = next_idx;
}
cur_color = next_color;
}
if cur_idx != GRADIENT_DATA_TABLE_END {
error!("Gradient stops abruptly at {}, auto-completing to white", cur_idx);
- GradientGpuBlockBuilder::fill_colors(
- cur_idx,
- GRADIENT_DATA_TABLE_END,
- &PremultipliedColorF::WHITE,
- &cur_color,
- &mut entries,
- );
}
// Fill in the last entry with the last color stop
GradientGpuBlockBuilder::fill_colors(
GRADIENT_DATA_LAST_STOP,
GRADIENT_DATA_LAST_STOP + 1,
&cur_color,
&cur_color,

View file

@ -0,0 +1,36 @@
diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp
--- a/widget/gtk/nsWindow.cpp
+++ b/widget/gtk/nsWindow.cpp
@@ -3504,12 +3504,6 @@
mBounds = aRect;
ConstrainSize(&mBounds.width, &mBounds.height);
- // eWindowType_child is not supported on Wayland. Just switch to toplevel
- // as a workaround.
- if (!mIsX11Display && mWindowType == eWindowType_child) {
- mWindowType = eWindowType_toplevel;
- }
-
// figure out our parent window
GtkWidget* parentMozContainer = nullptr;
GtkContainer* parentGtkContainer = nullptr;
@@ -3543,6 +3537,18 @@
topLevelParent = GTK_WINDOW(gtk_widget_get_toplevel(parentMozContainer));
}
+ if (!mIsX11Display) {
+ if (mWindowType == eWindowType_child) {
+ // eWindowType_child is not supported on Wayland. Just switch to toplevel
+ // as a workaround.
+ mWindowType = eWindowType_toplevel;
+ } else if (mWindowType == eWindowType_popup && !topLevelParent) {
+ // Workaround for Wayland where the popup windows always need to have
+ // parent window. For example webrtc ui is a popup window without parent.
+ mWindowType = eWindowType_toplevel;
+ }
+ }
+
// ok, create our windows
switch (mWindowType) {
case eWindowType_dialog:

205
mozilla-1567434-1.patch Normal file
View file

@ -0,0 +1,205 @@
diff --git a/widget/gtk/nsWindow.h b/widget/gtk/nsWindow.h
--- a/widget/gtk/nsWindow.h
+++ b/widget/gtk/nsWindow.h
@@ -487,6 +487,7 @@
GtkWidget* mShell;
MozContainer* mContainer;
GdkWindow* mGdkWindow;
+ GtkWindow* mToplevelParentWindow;
bool mWindowShouldStartDragging = false;
PlatformCompositorWidgetDelegate* mCompositorWidgetDelegate;
diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp
--- a/widget/gtk/nsWindow.cpp
+++ b/widget/gtk/nsWindow.cpp
@@ -401,6 +401,7 @@
mContainer = nullptr;
mGdkWindow = nullptr;
mShell = nullptr;
+ mToplevelParentWindow = nullptr;
mCompositorWidgetDelegate = nullptr;
mHasMappedToplevel = false;
mIsFullyObscured = false;
@@ -1144,6 +1145,8 @@
nsWindow* window =
static_cast<nsWindow*>(gVisibleWaylandPopupWindows->data);
if (window->mPopupType != ePopupTypeTooltip) break;
+ LOG(("nsWindow::HideWaylandTooltips [%p] hidding tooltip [%p].\n",
+ (void*)this, window));
window->HideWaylandWindow();
gVisibleWaylandPopupWindows = g_list_delete_link(
gVisibleWaylandPopupWindows, gVisibleWaylandPopupWindows);
@@ -1172,9 +1175,12 @@
// before we open another one on that level. It means that every open
// popup needs to have an unique parent.
GtkWidget* nsWindow::ConfigureWaylandPopupWindows() {
+ LOG(("nsWindow::ConfigureWaylandPopupWindows [%p]\n", (void*)this));
+
// Check if we're already configured.
if (gVisibleWaylandPopupWindows &&
g_list_find(gVisibleWaylandPopupWindows, this)) {
+ LOG(("...[%p] is already configured.\n", (void*)this));
return GTK_WIDGET(gtk_window_get_transient_for(GTK_WINDOW(mShell)));
}
@@ -1182,9 +1188,15 @@
// as it's short lived temporary window.
HideWaylandTooltips();
- GtkWindow* parentWidget = nullptr;
+ GtkWindow* parentWidget = mToplevelParentWindow;
if (gVisibleWaylandPopupWindows) {
+ LOG(("... there's visible active popup [%p]\n",
+ gVisibleWaylandPopupWindows->data));
+
if (mPopupType == ePopupTypeTooltip) {
+ LOG(("...[%p] is tooltip, parent [%p]\n", (void*)this,
+ gVisibleWaylandPopupWindows->data));
+
// Attach tooltip window to the latest popup window
// to have both visible.
nsWindow* window =
@@ -1200,12 +1212,19 @@
// nsWindow::Create()) or we're toplevel popup without parent.
// In both cases just use parent which was passed to nsWindow::Create().
if (!menuPopupFrame) {
- return GTK_WIDGET(gtk_window_get_transient_for(GTK_WINDOW(mShell)));
+ LOG(("...[%p] menuPopupFrame = null, using given parent widget [%p]\n",
+ (void*)this, parentWidget));
+ return GTK_WIDGET(parentWidget);
}
nsWindow* parentWindow =
static_cast<nsWindow*>(menuPopupFrame->GetParentMenuWidget());
+ LOG(("...[%p] GetParentMenuWidget() = %p\n", (void*)this, parentWindow));
+
if (!parentWindow) {
+ LOG(("...[%p] using active/visible popups as a parent [%p]\n",
+ (void*)this, gVisibleWaylandPopupWindows->data));
+
// We're toplevel popup menu attached to another menu. Just use our
// latest popup as a parent.
parentWindow =
@@ -1234,10 +1253,10 @@
}
}
+ MOZ_ASSERT(parentWidget, "Missing parent widget for wayland popup!");
if (parentWidget) {
+ LOG(("...[%p] set parent widget [%p]\n", (void*)this, parentWidget));
gtk_window_set_transient_for(GTK_WINDOW(mShell), parentWidget);
- } else {
- parentWidget = gtk_window_get_transient_for(GTK_WINDOW(mShell));
}
gVisibleWaylandPopupWindows =
g_list_prepend(gVisibleWaylandPopupWindows, this);
@@ -1248,9 +1267,11 @@
static void NativeMoveResizeWaylandPopupCallback(
GdkWindow* window, const GdkRectangle* flipped_rect,
const GdkRectangle* final_rect, gboolean flipped_x, gboolean flipped_y,
- void* unused) {
- LOG(("%s flipped %d %d\n", __FUNCTION__, flipped_rect->x, flipped_rect->y));
- LOG(("%s final %d %d\n", __FUNCTION__, final_rect->x, final_rect->y));
+ void* aWindow) {
+ LOG(("%s [%p] flipped %d %d\n", __FUNCTION__, aWindow, flipped_rect->x,
+ flipped_rect->y));
+ LOG(("%s [%p] final %d %d\n", __FUNCTION__, aWindow, final_rect->x,
+ final_rect->y));
}
#endif
@@ -1264,6 +1285,8 @@
// Compositor may be confused by windows with width/height = 0
// and positioning such windows leads to Bug 1555866.
if (!AreBoundsSane()) {
+ LOG(("nsWindow::NativeMoveResizeWaylandPopup [%p] Bounds are not sane\n",
+ (void*)this));
return;
}
@@ -1277,6 +1300,8 @@
// - gdk_window_move_to_rect() is not available
// - the widget doesn't have a valid GdkWindow
if (!sGdkWindowMoveToRect || !gdkWindow) {
+ LOG(("nsWindow::NativeMoveResizeWaylandPopup [%p] use gtk_window_move()\n",
+ (void*)this));
gtk_window_move(GTK_WINDOW(mShell), aPosition->x, aPosition->y);
return;
}
@@ -1302,8 +1327,12 @@
}
LOG((" request result %d %d\n", rect.x, rect.y));
#ifdef DEBUG
- g_signal_connect(gdkWindow, "moved-to-rect",
- G_CALLBACK(NativeMoveResizeWaylandPopupCallback), this);
+ if (!g_signal_handler_find(
+ gdkWindow, G_SIGNAL_MATCH_FUNC, 0, 0, nullptr,
+ FuncToGpointer(NativeMoveResizeWaylandPopupCallback), this)) {
+ g_signal_connect(gdkWindow, "moved-to-rect",
+ G_CALLBACK(NativeMoveResizeWaylandPopupCallback), this);
+ }
#endif
GdkGravity rectAnchor = GDK_GRAVITY_NORTH_WEST;
@@ -3508,7 +3537,6 @@
GtkWidget* parentMozContainer = nullptr;
GtkContainer* parentGtkContainer = nullptr;
GdkWindow* parentGdkWindow = nullptr;
- GtkWindow* topLevelParent = nullptr;
nsWindow* parentnsWindow = nullptr;
GtkWidget* eventWidget = nullptr;
bool drawToContainer = false;
@@ -3534,7 +3562,8 @@
// get the toplevel window just in case someone needs to use it
// for setting transients or whatever.
- topLevelParent = GTK_WINDOW(gtk_widget_get_toplevel(parentMozContainer));
+ mToplevelParentWindow =
+ GTK_WINDOW(gtk_widget_get_toplevel(parentMozContainer));
}
if (!mIsX11Display) {
@@ -3542,7 +3571,7 @@
// eWindowType_child is not supported on Wayland. Just switch to toplevel
// as a workaround.
mWindowType = eWindowType_toplevel;
- } else if (mWindowType == eWindowType_popup && !topLevelParent) {
+ } else if (mWindowType == eWindowType_popup && !mToplevelParentWindow) {
// Workaround for Wayland where the popup windows always need to have
// parent window. For example webrtc ui is a popup window without parent.
mWindowType = eWindowType_toplevel;
@@ -3677,7 +3706,7 @@
gdk_get_program_class());
gtk_window_set_type_hint(GTK_WINDOW(mShell),
GDK_WINDOW_TYPE_HINT_DIALOG);
- gtk_window_set_transient_for(GTK_WINDOW(mShell), topLevelParent);
+ gtk_window_set_transient_for(GTK_WINDOW(mShell), mToplevelParentWindow);
} else if (mWindowType == eWindowType_popup) {
gtk_window_set_wmclass(GTK_WINDOW(mShell), "Popup",
gdk_get_program_class());
@@ -3730,10 +3759,11 @@
}
gtk_window_set_type_hint(GTK_WINDOW(mShell), gtkTypeHint);
- if (topLevelParent) {
+ if (mToplevelParentWindow) {
LOG(("nsWindow::Create [%p] Set popup parent %p\n", (void*)this,
- topLevelParent));
- gtk_window_set_transient_for(GTK_WINDOW(mShell), topLevelParent);
+ mToplevelParentWindow));
+ gtk_window_set_transient_for(GTK_WINDOW(mShell),
+ mToplevelParentWindow);
}
// We need realized mShell at NativeMove().
@@ -4011,7 +4041,8 @@
#endif
}
- LOG(("nsWindow [%p]\n", (void*)this));
+ LOG(("nsWindow [%p] %s\n", (void*)this,
+ mWindowType == eWindowType_toplevel ? "Toplevel" : "Popup"));
if (mShell) {
LOG(("\tmShell %p mContainer %p mGdkWindow %p 0x%lx\n", mShell, mContainer,
mGdkWindow, mIsX11Display ? gdk_x11_window_get_xid(mGdkWindow) : 0));

35
mozilla-1567434-2.patch Normal file
View file

@ -0,0 +1,35 @@
diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp
--- a/widget/gtk/nsWindow.cpp
+++ b/widget/gtk/nsWindow.cpp
@@ -1208,6 +1208,7 @@
if (frame) {
menuPopupFrame = do_QueryFrame(frame);
}
+
// The popup is not fully created yet (we're called from
// nsWindow::Create()) or we're toplevel popup without parent.
// In both cases just use parent which was passed to nsWindow::Create().
@@ -1217,10 +1218,22 @@
return GTK_WIDGET(parentWidget);
}
+ LOG(("...[%p] is %s\n", (void*)this,
+ menuPopupFrame->IsContextMenu() ? "context menu" : "popup"));
+
nsWindow* parentWindow =
static_cast<nsWindow*>(menuPopupFrame->GetParentMenuWidget());
LOG(("...[%p] GetParentMenuWidget() = %p\n", (void*)this, parentWindow));
+ // If the popup is a regular menu but GetParentMenuWidget() returns
+ // nullptr which means it's connected non-menu parent
+ // (bookmark toolbar for instance).
+ // In this case use a parent given at nsWindow::Create().
+ if (!parentWindow && !menuPopupFrame->IsContextMenu()) {
+ parentWindow =
+ get_window_for_gtk_widget(GTK_WIDGET(mToplevelParentWindow));
+ }
+
if (!parentWindow) {
LOG(("...[%p] using active/visible popups as a parent [%p]\n",
(void*)this, gVisibleWaylandPopupWindows->data));

73
mozilla-1568569.patch Normal file
View file

@ -0,0 +1,73 @@
diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp
--- a/widget/gtk/nsWindow.cpp
+++ b/widget/gtk/nsWindow.cpp
@@ -3238,16 +3238,18 @@ void nsWindow::OnWindowStateEvent(GtkWid
// We don't care about anything but changes in the maximized/icon/fullscreen
// states
if ((aEvent->changed_mask &
(GDK_WINDOW_STATE_ICONIFIED | GDK_WINDOW_STATE_MAXIMIZED |
GDK_WINDOW_STATE_FULLSCREEN)) == 0) {
return;
}
+ nsSizeMode lastSizeState = mSizeState;
+
if (aEvent->new_window_state & GDK_WINDOW_STATE_ICONIFIED) {
LOG(("\tIconified\n"));
mSizeState = nsSizeMode_Minimized;
#ifdef ACCESSIBILITY
DispatchMinimizeEventAccessible();
#endif // ACCESSIBILITY
} else if (aEvent->new_window_state & GDK_WINDOW_STATE_FULLSCREEN) {
LOG(("\tFullscreen\n"));
@@ -3261,16 +3263,28 @@ void nsWindow::OnWindowStateEvent(GtkWid
} else {
LOG(("\tNormal\n"));
mSizeState = nsSizeMode_Normal;
#ifdef ACCESSIBILITY
DispatchRestoreEventAccessible();
#endif // ACCESSIBILITY
}
+ // Fullscreen video playback may generate bogus alpha values which blends
+ // with desktop background in fullscreen video playback (Bug 1568569).
+ // As a workaround enable to draw mShell background in fullscreen mode
+ // if we draw to mContainer.
+ if (gtk_widget_get_has_window(GTK_WIDGET(mContainer))) {
+ if (mSizeState == nsSizeMode_Fullscreen) {
+ gtk_widget_set_app_paintable(mShell, FALSE);
+ } else if (lastSizeState == nsSizeMode_Fullscreen) {
+ gtk_widget_set_app_paintable(mShell, TRUE);
+ }
+ }
+
if (mWidgetListener) {
mWidgetListener->SizeModeChanged(mSizeState);
if (aEvent->changed_mask & GDK_WINDOW_STATE_FULLSCREEN) {
mWidgetListener->FullscreenChanged(aEvent->new_window_state &
GDK_WINDOW_STATE_FULLSCREEN);
}
}
@@ -3787,16 +3801,21 @@ nsresult nsWindow::Create(nsIWidget* aPa
eventWidget = (drawToContainer) ? container : mShell;
// Prevent GtkWindow from painting a background to avoid flickering.
gtk_widget_set_app_paintable(eventWidget, TRUE);
gtk_widget_add_events(eventWidget, kEvents);
if (drawToContainer) {
gtk_widget_add_events(mShell, GDK_PROPERTY_CHANGE_MASK);
+ // Don't paint mShell background when we draw to mContainer.
+ // Otherwise we see mShell backround to shine through
+ // mContainer (Bug 1507608).
+ // But it may also lead to various bugs where mContainer has unintended
+ // transparent parts which blend with underlying desktop (Bug 1516224).
gtk_widget_set_app_paintable(mShell, TRUE);
}
if (mTransparencyBitmapForTitlebar) {
moz_container_force_default_visual(mContainer);
}
// If we draw to mContainer window then configure it now because
// gtk_container_add() realizes the child widget.

29
mozilla-1573813.patch Normal file
View file

@ -0,0 +1,29 @@
diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp
--- a/widget/gtk/nsWindow.cpp
+++ b/widget/gtk/nsWindow.cpp
@@ -6577,11 +6577,22 @@
}
gint nsWindow::GdkScaleFactor() {
+ // For popup windows with parent window we need to get scale factor of the
+ // parent window. Otherwise the scale factor of the popup is not updated
+ // during it's hidden.
+ GdkWindow* scaledGdkWindow = mGdkWindow;
+ if (mToplevelParentWindow) {
+ scaledGdkWindow = gtk_widget_get_window(GTK_WIDGET(mToplevelParentWindow));
+ // Fallback for windows which parent has been unrealized.
+ if (!scaledGdkWindow) {
+ scaledGdkWindow = mGdkWindow;
+ }
+ }
// Available as of GTK 3.10+
static auto sGdkWindowGetScaleFactorPtr =
(gint(*)(GdkWindow*))dlsym(RTLD_DEFAULT, "gdk_window_get_scale_factor");
- if (sGdkWindowGetScaleFactorPtr && mGdkWindow)
- return (*sGdkWindowGetScaleFactorPtr)(mGdkWindow);
+ if (sGdkWindowGetScaleFactorPtr && scaledGdkWindow)
+ return (*sGdkWindowGetScaleFactorPtr)(scaledGdkWindow);
return ScreenHelperGTK::GetGTKMonitorScaleFactor();
}

14
mozilla-build-arm.patch Normal file
View 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)

12
rhbz-1173156.patch Normal file
View file

@ -0,0 +1,12 @@
diff -up a/extensions/auth/nsAuthSambaNTLM.cpp.old b/extensions/auth/nsAuthSambaNTLM.cpp
--- a/extensions/auth/nsAuthSambaNTLM.cpp.old 2014-11-25 12:23:22.000000000 +0100
+++ b/extensions/auth/nsAuthSambaNTLM.cpp 2014-12-23 15:26:36.606674625 +0100
@@ -161,7 +161,7 @@
const char* username = PR_GetEnv("USER");
if (!username) return NS_ERROR_FAILURE;
- const char* const args[] = {"ntlm_auth",
+ const char* const args[] = {"/usr/bin/ntlm_auth",
"--helper-protocol",
"ntlmssp-client-1",
"--use-cached-creds",

View 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

View file

@ -1,11 +1,12 @@
--- firefox-78.0/layout/base/PresShell.orig.h 2020-06-26 20:10:50.168878803 +0200
+++ firefox-78.0/layout/base/PresShell.h 2020-06-26 23:13:24.174571951 +0200
@@ -257,7 +257,7 @@
diff -up firefox-65.0/layout/base/PresShell.h.1354671 firefox-65.0/layout/base/PresShell.h
--- firefox-65.0/layout/base/PresShell.h.1354671 2019-01-29 11:50:08.516649643 +0100
+++ firefox-65.0/layout/base/PresShell.h 2019-01-29 11:51:48.930258629 +0100
@@ -205,7 +205,7 @@ class nsIPresShell : public nsStubDocume
* to the same aSize value. AllocateFrame is infallible and will abort
* on out-of-memory.
*/
- void* AllocateFrame(nsQueryFrame::FrameIID aID, size_t aSize) {
+ void* __attribute__((optimize("no-lifetime-dse"))) AllocateFrame(nsQueryFrame::FrameIID aID, size_t aSize) {
#define FRAME_ID(classname, ...) \
static_assert(size_t(nsQueryFrame::FrameIID::classname##_id) == \
size_t(eArenaObjectID_##classname), \
void* result = mFrameArena.AllocateByFrameID(aID, aSize);
RecordAlloc(result);
return result;

View file

@ -1,60 +0,0 @@
#!/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
if [ -z "$XDG_RUNTIME_DIR" ]; then
export XDG_RUNTIME_DIR=$HOME
fi
export WAYLAND_DISPLAY=icecat-pgo-wayland-0
if [ -S "$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" ]; then
rm -f $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY
rm -f $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY.lock
fi
echo "Launch mutter for $WAYLAND_DISPLAY"
mutter --headless --virtual-monitor 1920x1080 --wayland-display=$WAYLAND_DISPLAY --no-x11 & MUTTER_PID=$!
export MUTTER_PID
echo "Mutter PID $MUTTER_PID"
echo "Waiting for mutter to start..."
sleep 5
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
if [ ! -S "$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" ]; then
echo "Mutter failed to start!"
exit 1
fi
echo "Mutter is running, $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY is here."

View file

@ -1,5 +1,5 @@
SHA512 (cbindgen-vendor.tar.xz) = 647dcadf3507bd05262613d03ff18a8c876bcbb4e83ce59f911128ae020ac16695298987c6c14f8b7a7aee5bb096740c6885c0a854d8b26431fc9a8ff864c369
SHA512 (icecat-140.7.0-langpacks.tar.gz) = a4618e3272b48be4307c79222bdd55f321aefb6d6ba08beb10178d0b95530bc4130cf86901d0906e714bd75106ad8513957fe3ad335431c8faf5b2d9767e17de
SHA512 (icecat-140.7.0-rh1.tar.bz2) = 7a19f7928322bea905828e6a4e981395687f1b649e37518a8000bcfcb29446b424ee592f708d0c7c93ebeb901820752785f883a937e9361e9f172a0a9bacb603
SHA512 (icecat-COPYING-licensefiles.tar.gz) = ed541845170f1d209e322b0def3248d571e0c42c4a17c74e83197e743bd8a128a1475f5312d905c8e70d047eddeac17e604373892eb6d5f1720c5c361849c42c
SHA512 (icecat.png) = a3cec16cb15a27c3c91b53e2c534e78b07911011ff1331e450c0baf8e13b76da7cea2a90e5d75191fa88cfbfd40a0a7f3e553e92b64d0043dadd5ad5edfdf81c
SHA512 (cbindgen-vendor.tar.xz) = 562433358bcce81852e5e013068a0961be61785917094b3c0c93df34bc4a060eea6e89d86951f76e9e3d9644a56cf756f7278c8fa85b8a4a8b8c8b58c16a8b7c
SHA512 (icecat-68.12.0-langpacks.tar.gz) = e88a3dd198c989a348e10521a2ce3a893bd6fc9a55b9c2ac29888e06a4f4cec82fd6f13a76a09c488a841a0ab2d642d0dfca2d6cc48afd24e2037a1299062236
SHA512 (icecat-68.12.0-rh1.tar.bz2) = 4af3d796008598cfef920f9a4d6246036fe7e23d837147de80a1f9047f1fe359ef6dba3756c6d06b0bf45497f11eb40415860d84face3dc7e553d265cacdaad5
SHA512 (icecat-COPYING-licensefiles.tar.gz) = ed541845170f1d209e322b0def3248d571e0c42c4a17c74e83197e743bd8a128a1475f5312d905c8e70d047eddeac17e604373892eb6d5f1720c5c361849c42c