Compare commits
No commits in common. "rawhide" and "f35" have entirely different histories.
38 changed files with 3009 additions and 436 deletions
106
.gitignore
vendored
106
.gitignore
vendored
|
|
@ -190,109 +190,3 @@
|
|||
/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
|
||||
|
|
|
|||
14
README.md
14
README.md
|
|
@ -6,29 +6,25 @@ Extensions included to this version of IceCat:
|
|||
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.
|
||||
|
||||
* HTTPS Everywhere
|
||||
|
||||
* JShelter
|
||||
HTTPS Everywhere is an extension that encrypts your communications with
|
||||
many major websites, making your browsing more secure.
|
||||
|
||||
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.
|
||||
* ViewTube
|
||||
|
||||
Watch videos from video sharing websites with extra options.
|
||||
|
||||
* 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).
|
||||
|
|
|
|||
45
build-aarch64-skia.patch
Normal file
45
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
build-arm-libopus.patch
Normal file
12
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"
|
||||
|
||||
12
build-disable-elfhack.patch
Normal file
12
build-disable-elfhack.patch
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
diff -up firefox-84.0/toolkit/moz.configure.disable-elfhack firefox-84.0/toolkit/moz.configure
|
||||
--- firefox-84.0/toolkit/moz.configure.disable-elfhack 2020-12-10 12:37:30.727243266 +0100
|
||||
+++ firefox-84.0/toolkit/moz.configure 2020-12-10 12:39:42.771967894 +0100
|
||||
@@ -1280,7 +1280,7 @@ with only_when("--enable-compile-environ
|
||||
help="{Enable|Disable} elf hacks",
|
||||
)
|
||||
|
||||
- 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(check_build_environment)
|
||||
77
firefox-disable-ffvpx-with-vapi.patch
Normal file
77
firefox-disable-ffvpx-with-vapi.patch
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
diff -up firefox-88.0/dom/media/platforms/PDMFactory.cpp.ffvpx-with-vapi firefox-88.0/dom/media/platforms/PDMFactory.cpp
|
||||
--- firefox-88.0/dom/media/platforms/PDMFactory.cpp.ffvpx-with-vapi 2021-04-15 21:44:28.000000000 +0200
|
||||
+++ firefox-88.0/dom/media/platforms/PDMFactory.cpp 2021-04-19 13:27:07.808429721 +0200
|
||||
@@ -481,12 +481,6 @@ void PDMFactory::CreateRddPDMs() {
|
||||
CreateAndStartupPDM<AppleDecoderModule>();
|
||||
}
|
||||
#endif
|
||||
-#ifdef MOZ_FFVPX
|
||||
- if (StaticPrefs::media_ffvpx_enabled() &&
|
||||
- StaticPrefs::media_rdd_ffvpx_enabled()) {
|
||||
- CreateAndStartupPDM<FFVPXRuntimeLinker>();
|
||||
- }
|
||||
-#endif
|
||||
#ifdef MOZ_FFMPEG
|
||||
if (StaticPrefs::media_ffmpeg_enabled() &&
|
||||
StaticPrefs::media_rdd_ffmpeg_enabled() &&
|
||||
@@ -495,6 +489,12 @@ void PDMFactory::CreateRddPDMs() {
|
||||
FFmpegRuntimeLinker::LinkStatusCode());
|
||||
}
|
||||
#endif
|
||||
+#ifdef MOZ_FFVPX
|
||||
+ if (StaticPrefs::media_ffvpx_enabled() &&
|
||||
+ StaticPrefs::media_rdd_ffvpx_enabled()) {
|
||||
+ CreateAndStartupPDM<FFVPXRuntimeLinker>();
|
||||
+ }
|
||||
+#endif
|
||||
CreateAndStartupPDM<AgnosticDecoderModule>();
|
||||
}
|
||||
|
||||
@@ -525,11 +525,6 @@ void PDMFactory::CreateContentPDMs() {
|
||||
CreateAndStartupPDM<OmxDecoderModule>();
|
||||
}
|
||||
#endif
|
||||
-#ifdef MOZ_FFVPX
|
||||
- if (StaticPrefs::media_ffvpx_enabled()) {
|
||||
- CreateAndStartupPDM<FFVPXRuntimeLinker>();
|
||||
- }
|
||||
-#endif
|
||||
#ifdef MOZ_FFMPEG
|
||||
if (StaticPrefs::media_ffmpeg_enabled() &&
|
||||
!CreateAndStartupPDM<FFmpegRuntimeLinker>()) {
|
||||
@@ -537,6 +532,11 @@ void PDMFactory::CreateContentPDMs() {
|
||||
FFmpegRuntimeLinker::LinkStatusCode());
|
||||
}
|
||||
#endif
|
||||
+#ifdef MOZ_FFVPX
|
||||
+ if (StaticPrefs::media_ffvpx_enabled()) {
|
||||
+ CreateAndStartupPDM<FFVPXRuntimeLinker>();
|
||||
+ }
|
||||
+#endif
|
||||
#ifdef MOZ_WIDGET_ANDROID
|
||||
if (StaticPrefs::media_android_media_codec_enabled()) {
|
||||
StartupPDM(AndroidDecoderModule::Create(),
|
||||
@@ -571,11 +571,6 @@ void PDMFactory::CreateDefaultPDMs() {
|
||||
CreateAndStartupPDM<OmxDecoderModule>();
|
||||
}
|
||||
#endif
|
||||
-#ifdef MOZ_FFVPX
|
||||
- if (StaticPrefs::media_ffvpx_enabled()) {
|
||||
- CreateAndStartupPDM<FFVPXRuntimeLinker>();
|
||||
- }
|
||||
-#endif
|
||||
#ifdef MOZ_FFMPEG
|
||||
if (StaticPrefs::media_ffmpeg_enabled() &&
|
||||
!CreateAndStartupPDM<FFmpegRuntimeLinker>()) {
|
||||
@@ -583,6 +578,11 @@ void PDMFactory::CreateDefaultPDMs() {
|
||||
FFmpegRuntimeLinker::LinkStatusCode());
|
||||
}
|
||||
#endif
|
||||
+#ifdef MOZ_FFVPX
|
||||
+ if (StaticPrefs::media_ffvpx_enabled()) {
|
||||
+ CreateAndStartupPDM<FFVPXRuntimeLinker>();
|
||||
+ }
|
||||
+#endif
|
||||
#ifdef MOZ_WIDGET_ANDROID
|
||||
if (StaticPrefs::media_android_media_codec_enabled()) {
|
||||
StartupPDM(AndroidDecoderModule::Create(),
|
||||
12
firefox-nss-version.patch
Normal file
12
firefox-nss-version.patch
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
diff -up firefox-78.0/toolkit/moz.configure.nss-version firefox-78.0/toolkit/moz.configure
|
||||
--- firefox-78.0/toolkit/moz.configure.nss-version 2020-06-30 08:47:09.657501414 +0200
|
||||
+++ firefox-78.0/toolkit/moz.configure 2020-06-30 08:47:12.652510169 +0200
|
||||
@@ -2089,7 +2089,7 @@ option('--with-system-nss', help='Use sy
|
||||
|
||||
imply_option('--with-system-nspr', True, when='--with-system-nss')
|
||||
|
||||
-nss_pkg = pkg_check_modules('NSS', 'nss >= 3.53.1', when='--with-system-nss', config=False)
|
||||
+nss_pkg = pkg_check_modules('NSS', 'nss >= 3.53.0', when='--with-system-nss', config=False)
|
||||
|
||||
set_config('MOZ_SYSTEM_NSS', True, when='--with-system-nss')
|
||||
|
||||
14
firefox-vaapi-extra-frames.patch
Normal file
14
firefox-vaapi-extra-frames.patch
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
diff -up firefox-76.0.1/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp.old firefox-76.0.1/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp
|
||||
--- firefox-76.0.1/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp.old 2020-05-13 14:28:26.556800474 +0200
|
||||
+++ firefox-76.0.1/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp 2020-05-13 14:28:31.562768959 +0200
|
||||
@@ -43,7 +43,7 @@ typedef int VAStatus;
|
||||
#endif
|
||||
|
||||
// Use some extra HW frames for potential rendering lags.
|
||||
-#define EXTRA_HW_FRAMES 6
|
||||
+#define EXTRA_HW_FRAMES 20
|
||||
|
||||
typedef mozilla::layers::Image Image;
|
||||
typedef mozilla::layers::PlanarYCbCrImage PlanarYCbCrImage;
|
||||
diff -up firefox-76.0.1/media/libyuv/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium.old firefox-76.0.1/media/libyuv/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium
|
||||
diff -up firefox-76.0.1/media/webrtc/trunk/Makefile.old firefox-76.0.1/media/webrtc/trunk/Makefile
|
||||
|
|
@ -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
|
||||
|
||||
|
||||
12
icecat-build-arm-libaom.patch
Normal file
12
icecat-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
|
||||
36
icecat-fix_addon_installation.patch
Normal file
36
icecat-fix_addon_installation.patch
Normal 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");
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
32
icecat-fix_installer.patch
Normal file
32
icecat-fix_installer.patch
Normal 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
11
icecat-fix_jar.patch
Normal 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)
|
||||
|
|
@ -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
|
||||
62
icecat-glibc-dynstack.patch
Normal file
62
icecat-glibc-dynstack.patch
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
diff -ur a/js/xpconnect/src/XPCJSContext.cpp b/js/xpconnect/src/XPCJSContext.cpp
|
||||
--- a/js/xpconnect/src/XPCJSContext.cpp 2021-07-05 21:16:02.000000000 +0200
|
||||
+++ b/js/xpconnect/src/XPCJSContext.cpp 2021-07-19 15:01:24.083460460 +0200
|
||||
@@ -81,14 +81,6 @@
|
||||
using namespace JS;
|
||||
using mozilla::dom::AutoEntryScript;
|
||||
|
||||
-// The watchdog thread loop is pretty trivial, and should not require much stack
|
||||
-// space to do its job. So only give it 32KiB or the platform minimum.
|
||||
-#if !defined(PTHREAD_STACK_MIN)
|
||||
-# define PTHREAD_STACK_MIN 0
|
||||
-#endif
|
||||
-static constexpr size_t kWatchdogStackSize =
|
||||
- PTHREAD_STACK_MIN < 32 * 1024 ? 32 * 1024 : PTHREAD_STACK_MIN;
|
||||
-
|
||||
static void WatchdogMain(void* arg);
|
||||
class Watchdog;
|
||||
class WatchdogManager;
|
||||
@@ -161,7 +153,7 @@
|
||||
// watchdog, we need to join it on shutdown.
|
||||
mThread = PR_CreateThread(PR_USER_THREAD, WatchdogMain, this,
|
||||
PR_PRIORITY_NORMAL, PR_GLOBAL_THREAD,
|
||||
- PR_JOINABLE_THREAD, kWatchdogStackSize);
|
||||
+ PR_JOINABLE_THREAD, 0);
|
||||
if (!mThread) {
|
||||
MOZ_CRASH("PR_CreateThread failed!");
|
||||
}
|
||||
diff -ur a/security/sandbox/linux/launch/SandboxLaunch.cpp b/security/sandbox/linux/launch/SandboxLaunch.cpp
|
||||
--- a/security/sandbox/linux/launch/SandboxLaunch.cpp 2021-07-05 18:20:36.000000000 +0200
|
||||
+++ b/security/sandbox/linux/launch/SandboxLaunch.cpp 2021-07-20 08:39:17.272136982 +0200
|
||||
@@ -489,7 +489,8 @@ static int CloneCallee(void* aPtr) {
|
||||
// we don't currently support sandboxing under valgrind.
|
||||
MOZ_NEVER_INLINE MOZ_ASAN_BLACKLIST static pid_t DoClone(int aFlags,
|
||||
jmp_buf* aCtx) {
|
||||
- uint8_t miniStack[PTHREAD_STACK_MIN];
|
||||
+ static constexpr size_t kStackAlignment = 16;
|
||||
+ uint8_t miniStack[4096] __attribute__((aligned(kStackAlignment)));
|
||||
#ifdef __hppa__
|
||||
void* stackPtr = miniStack;
|
||||
#else
|
||||
@@ -510,13 +511,19 @@ static pid_t ForkWithFlags(int aFlags) {
|
||||
CLONE_CHILD_CLEARTID;
|
||||
MOZ_RELEASE_ASSERT((aFlags & kBadFlags) == 0);
|
||||
|
||||
+ // Block signals due to small stack in DoClone.
|
||||
+ sigset_t oldSigs;
|
||||
+ BlockAllSignals(&oldSigs);
|
||||
+
|
||||
+ int ret = 0;
|
||||
jmp_buf ctx;
|
||||
if (setjmp(ctx) == 0) {
|
||||
// In the parent and just called setjmp:
|
||||
- return DoClone(aFlags | SIGCHLD, &ctx);
|
||||
+ ret = DoClone(aFlags | SIGCHLD, &ctx);
|
||||
}
|
||||
+ RestoreSignals(&oldSigs);
|
||||
// In the child and have longjmp'ed:
|
||||
- return 0;
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
static bool WriteStringToFile(const char* aPath, const char* aStr,
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
VERSION=140.7.0
|
||||
VERSION=91.9.1
|
||||
URL=https://ftp.mozilla.org/pub/firefox/releases/${VERSION}esr/linux-x86_64/xpi/
|
||||
|
||||
for u in $URL; do
|
||||
|
|
@ -17,7 +17,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
|
||||
|
|
|
|||
20
icecat-libevent_linkflag.patch
Normal file
20
icecat-libevent_linkflag.patch
Normal 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
|
||||
|
|
@ -6,7 +6,6 @@ export MOZ_TELEMETRY_REPORTING=
|
|||
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"
|
||||
|
|
|
|||
171
icecat-mozilla-1754752.patch
Normal file
171
icecat-mozilla-1754752.patch
Normal file
|
|
@ -0,0 +1,171 @@
|
|||
# HG changeset patch
|
||||
# User Emilio Cobos Álvarez <emilio@crisal.io>
|
||||
# Date 1645177075 0
|
||||
# Node ID 8af9ccb50f19e293ab7eb2b3d76961827ba84a54
|
||||
# Parent 2c092e335ae05bf05c0217a1936b185a68a66a8b
|
||||
Bug 1754752 - Use initializer lists in some swgl constructors. r=lsalzman,gfx-reviewers
|
||||
|
||||
We call it from another constexpr function. Clang seems to not be so
|
||||
strict about this.
|
||||
|
||||
Differential Revision: https://phabricator.services.mozilla.com/D139078
|
||||
|
||||
diff --git a/gfx/wr/swgl/src/glsl.h b/gfx/wr/swgl/src/glsl.h
|
||||
--- a/gfx/wr/swgl/src/glsl.h
|
||||
+++ b/gfx/wr/swgl/src/glsl.h
|
||||
@@ -2296,30 +2296,22 @@ struct mat4;
|
||||
|
||||
struct mat2 {
|
||||
vec2 data[2];
|
||||
|
||||
vec2& operator[](int index) { return data[index]; }
|
||||
const vec2& operator[](int index) const { return data[index]; }
|
||||
mat2() = default;
|
||||
|
||||
- IMPLICIT mat2(Float a) {
|
||||
- data[0] = vec2(a);
|
||||
- data[1] = vec2(a);
|
||||
- }
|
||||
-
|
||||
- mat2(vec2 a, vec2 b) {
|
||||
- data[0] = a;
|
||||
- data[1] = b;
|
||||
- }
|
||||
+ IMPLICIT constexpr mat2(Float a) : data{vec2(a), vec2(a)} {}
|
||||
+
|
||||
+ constexpr mat2(vec2 a, vec2 b) : data{a, b} {}
|
||||
IMPLICIT mat2(const mat4& mat);
|
||||
- IMPLICIT constexpr mat2(mat2_scalar s) {
|
||||
- data[0] = vec2(s.data[0]);
|
||||
- data[1] = vec2(s.data[1]);
|
||||
- }
|
||||
+ IMPLICIT constexpr mat2(mat2_scalar s)
|
||||
+ : data{vec2(s.data[0]), vec2(s.data[1])} {}
|
||||
|
||||
friend vec2 operator*(mat2 m, vec2 v) {
|
||||
vec2 u;
|
||||
u.x = m[0].x * v.x + m[1].x * v.y;
|
||||
u.y = m[0].y * v.x + m[1].y * v.y;
|
||||
return u;
|
||||
}
|
||||
friend mat2 operator*(mat2 m, Float f) {
|
||||
@@ -2399,40 +2391,29 @@ struct mat3_scalar {
|
||||
};
|
||||
|
||||
struct mat3 {
|
||||
vec3 data[3];
|
||||
|
||||
vec3& operator[](int index) { return data[index]; }
|
||||
const vec3& operator[](int index) const { return data[index]; }
|
||||
mat3() = default;
|
||||
- mat3(vec3 a, vec3 b, vec3 c) {
|
||||
- data[0] = a;
|
||||
- data[1] = b;
|
||||
- data[2] = c;
|
||||
- }
|
||||
-
|
||||
- IMPLICIT constexpr mat3(mat3_scalar s) {
|
||||
- data[0] = vec3(s.data[0]);
|
||||
- data[1] = vec3(s.data[1]);
|
||||
- data[2] = vec3(s.data[2]);
|
||||
- }
|
||||
- constexpr mat3(mat3_scalar s0, mat3_scalar s1, mat3_scalar s2,
|
||||
- mat3_scalar s3) {
|
||||
- data[0] = vec3(s0.data[0], s1.data[0], s2.data[0], s3.data[0]);
|
||||
- data[1] = vec3(s0.data[1], s1.data[1], s2.data[1], s3.data[1]);
|
||||
- data[2] = vec3(s0.data[2], s1.data[2], s2.data[2], s3.data[2]);
|
||||
- }
|
||||
+ constexpr mat3(vec3 a, vec3 b, vec3 c) : data{a, b, c} {}
|
||||
+
|
||||
+ IMPLICIT constexpr mat3(mat3_scalar s)
|
||||
+ : data{vec3(s.data[0]), vec3(s.data[1]), vec3(s.data[2])} {}
|
||||
+
|
||||
+ constexpr mat3(mat3_scalar s0, mat3_scalar s1, mat3_scalar s2, mat3_scalar s3)
|
||||
+ : data{vec3(s0.data[0], s1.data[0], s2.data[0], s3.data[0]),
|
||||
+ vec3(s0.data[1], s1.data[1], s2.data[1], s3.data[1]),
|
||||
+ vec3(s0.data[2], s1.data[2], s2.data[2], s3.data[2])} {}
|
||||
|
||||
constexpr mat3(Float d1, Float d2, Float d3, Float d4, Float d5, Float d6,
|
||||
- Float d7, Float d8, Float d9) {
|
||||
- data[0] = vec3(d1, d2, d3);
|
||||
- data[1] = vec3(d4, d5, d6);
|
||||
- data[2] = vec3(d7, d8, d9);
|
||||
- }
|
||||
+ Float d7, Float d8, Float d9)
|
||||
+ : data{vec3(d1, d2, d3), vec3(d4, d5, d6), vec3(d7, d8, d9)} {}
|
||||
|
||||
IMPLICIT mat3(const mat4& mat);
|
||||
|
||||
friend vec3 operator*(mat3 m, vec3 v) {
|
||||
vec3 u;
|
||||
u.x = m[0].x * v.x + m[1].x * v.y + m[2].x * v.z;
|
||||
u.y = m[0].y * v.x + m[1].y * v.y + m[2].y * v.z;
|
||||
u.z = m[0].z * v.x + m[1].z * v.y + m[2].z * v.z;
|
||||
@@ -2592,29 +2573,21 @@ struct mat4_scalar {
|
||||
return u;
|
||||
}
|
||||
};
|
||||
|
||||
struct mat4 {
|
||||
vec4 data[4];
|
||||
|
||||
mat4() = default;
|
||||
- IMPLICIT constexpr mat4(mat4_scalar s) {
|
||||
- data[0] = vec4(s.data[0]);
|
||||
- data[1] = vec4(s.data[1]);
|
||||
- data[2] = vec4(s.data[2]);
|
||||
- data[3] = vec4(s.data[3]);
|
||||
- }
|
||||
-
|
||||
- mat4(vec4 a, vec4 b, vec4 c, vec4 d) {
|
||||
- data[0] = a;
|
||||
- data[1] = b;
|
||||
- data[2] = c;
|
||||
- data[3] = d;
|
||||
- }
|
||||
+ IMPLICIT constexpr mat4(mat4_scalar s)
|
||||
+ : data{vec4(s.data[0]), vec4(s.data[1]), vec4(s.data[2]),
|
||||
+ vec4(s.data[3])} {}
|
||||
+
|
||||
+ constexpr mat4(vec4 a, vec4 b, vec4 c, vec4 d) : data{a, b, c, d} {}
|
||||
|
||||
vec4& operator[](int index) { return data[index]; }
|
||||
const vec4& operator[](int index) const { return data[index]; }
|
||||
|
||||
friend vec4 operator*(mat4 m, vec4 v) {
|
||||
vec4 u;
|
||||
u.x = m[0].x * v.x + m[1].x * v.y + m[2].x * v.z + m[3].x * v.w;
|
||||
u.y = m[0].y * v.x + m[1].y * v.y + m[2].y * v.z + m[3].y * v.w;
|
||||
|
||||
# HG changeset patch
|
||||
# User Emilio Cobos Álvarez <emilio@crisal.io>
|
||||
# Date 1645177101 0
|
||||
# Node ID 00128c425ebb4d4094e829f1936490d0aa2507f1
|
||||
# Parent 8af9ccb50f19e293ab7eb2b3d76961827ba84a54
|
||||
Bug 1754752 - Avoid a ton of warning spam when building swgl with gcc. r=lsalzman
|
||||
|
||||
Differential Revision: https://phabricator.services.mozilla.com/D139088
|
||||
|
||||
diff --git a/gfx/wr/swgl/src/gl.cc b/gfx/wr/swgl/src/gl.cc
|
||||
--- a/gfx/wr/swgl/src/gl.cc
|
||||
+++ b/gfx/wr/swgl/src/gl.cc
|
||||
@@ -77,17 +77,17 @@ WINBASEAPI BOOL WINAPI QueryPerformanceF
|
||||
#endif
|
||||
|
||||
#define UNREACHABLE __builtin_unreachable()
|
||||
|
||||
#define UNUSED [[maybe_unused]]
|
||||
|
||||
#define FALLTHROUGH [[fallthrough]]
|
||||
|
||||
-#ifdef MOZILLA_CLIENT
|
||||
+#if defined(MOZILLA_CLIENT) && defined(MOZ_CLANG_PLUGIN)
|
||||
# define IMPLICIT __attribute__((annotate("moz_implicit")))
|
||||
#else
|
||||
# define IMPLICIT
|
||||
#endif
|
||||
|
||||
#include "gl_defs.h"
|
||||
#include "glsl.h"
|
||||
#include "program.h"
|
||||
|
||||
143
icecat-pgo.patch
Normal file
143
icecat-pgo.patch
Normal file
|
|
@ -0,0 +1,143 @@
|
|||
diff -up a/build/moz.configure/lto-pgo.configure.pgo b/build/moz.configure/lto-pgo.configure
|
||||
--- a/build/moz.configure/lto-pgo.configure.pgo 2020-09-30 19:41:10.000000000 +0200
|
||||
+++ b/build/moz.configure/lto-pgo.configure 2020-10-01 14:48:15.459225300 +0200
|
||||
@@ -69,12 +69,14 @@ set_config('PGO_PROFILE_PATH', pgo_profi
|
||||
@imports(_from='__builtin__', _import='min')
|
||||
def pgo_flags(compiler, profdata, target_is_windows):
|
||||
if compiler.type == 'gcc':
|
||||
+ #profile_use = '-fprofile-use=$(topobjdir)'
|
||||
+ profile_use = '-fprofile-use'
|
||||
return namespace(
|
||||
gen_cflags=['-fprofile-generate'],
|
||||
gen_ldflags=['-fprofile-generate'],
|
||||
- use_cflags=['-fprofile-use', '-fprofile-correction',
|
||||
+ use_cflags=[profile_use, '-fprofile-correction',
|
||||
'-Wcoverage-mismatch'],
|
||||
- use_ldflags=['-fprofile-use'],
|
||||
+ use_ldflags=[profile_use],
|
||||
)
|
||||
|
||||
if compiler.type in ('clang-cl', 'clang'):
|
||||
@@ -192,13 +194,13 @@ def lto(value, c_compiler, ld64_known_go
|
||||
cflags.append("-flto")
|
||||
ldflags.append("-flto")
|
||||
else:
|
||||
- cflags.append("-flto=thin")
|
||||
- ldflags.append("-flto=thin")
|
||||
+ cflags.append("-flto")
|
||||
+ ldflags.append("-flto")
|
||||
elif c_compiler.type == 'clang-cl':
|
||||
if len(value) and value[0].lower() == '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 a/build/pgo/profileserver.py.pgo b/build/pgo/profileserver.py
|
||||
--- a/build/pgo/profileserver.py.pgo 2020-09-30 19:41:10.000000000 +0200
|
||||
+++ b/build/pgo/profileserver.py 2020-10-01 13:54:58.535312905 +0200
|
||||
@@ -11,7 +11,7 @@
|
||||
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 IceCatProfile, Preferences
|
||||
@@ -84,9 +84,22 @@ if __name__ == '__main__':
|
||||
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
|
||||
@@ -191,6 +204,11 @@
|
||||
print("IceCat 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 a/build/unix/mozconfig.unix.pgo b/build/unix/mozconfig.unix
|
||||
--- a/build/unix/mozconfig.unix.pgo 2020-09-30 19:41:10.000000000 +0200
|
||||
+++ b/build/unix/mozconfig.unix 2020-10-01 13:54:58.535312905 +0200
|
||||
@@ -6,6 +6,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 a/extensions/spellcheck/src/moz.build.pgo b/extensions/spellcheck/src/moz.build
|
||||
--- a/extensions/spellcheck/src/moz.build.pgo 2020-09-30 19:41:17.000000000 +0200
|
||||
+++ b/extensions/spellcheck/src/moz.build 2020-10-01 13:54:58.535312905 +0200
|
||||
@@ -31,3 +31,5 @@ EXPORTS.mozilla += [
|
||||
|
||||
if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
|
||||
CXXFLAGS += ['-Wno-error=shadow']
|
||||
+
|
||||
+CXXFLAGS += ['-fno-devirtualize']
|
||||
\ No newline at end of file
|
||||
diff -up a/python/mozbuild/mozbuild/build_commands.py.pgo b/python/mozbuild/mozbuild/build_commands.py
|
||||
--- a/python/mozbuild/mozbuild/build_commands.py.pgo 2020-09-30 19:41:46.000000000 +0200
|
||||
+++ b/python/mozbuild/mozbuild/build_commands.py 2020-10-01 13:54:58.535312905 +0200
|
||||
@@ -108,7 +108,8 @@ class Build(MachCommandBase):
|
||||
return status
|
||||
|
||||
pgo_env = os.environ.copy()
|
||||
- pgo_env['LLVM_PROFDATA'] = instr.config_environment.substs.get('LLVM_PROFDATA')
|
||||
+ if instr.config_environment.substs.get('CC_TYPE') != 'gcc':
|
||||
+ pgo_env['LLVM_PROFDATA'] = instr.config_environment.substs.get('LLVM_PROFDATA')
|
||||
pgo_env['JARLOG_FILE'] = mozpath.join(orig_topobjdir, 'jarlog/en-US.log')
|
||||
pgo_cmd = [
|
||||
instr.virtualenv_manager.python_path,
|
||||
--- a/toolkit/components/terminator/nsTerminator.cpp.pgo 2020-10-07 09:22:26.698243673 +0200
|
||||
+++ b/toolkit/components/terminator/nsTerminator.cpp 2020-10-07 09:22:43.026312999 +0200
|
||||
@@ -418,6 +418,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());
|
||||
const PRIntervalTime ticksDuration = PR_MillisecondsToInterval(1000);
|
||||
options->crashAfterTicks = crashAfterMS / ticksDuration;
|
||||
23
icecat-wayland.desktop
Normal file
23
icecat-wayland.desktop
Normal 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
7
icecat-wayland.sh.in
Normal 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
338
icecat-x11.desktop
Normal 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]=Để duyệt 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 duyệt 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 duyệt;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]=­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]=­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­
|
||||
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]=Cửa sổ mới
|
||||
Name[wo]=Palanteer bu bees
|
||||
Name[xh]=Ifestile entsha
|
||||
Name[zh-CN]=新建窗口
|
||||
Name[zh-TW]=開新視窗
|
||||
Exec=icecat-x11 --name icecat-x11 --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]=نْو پرایوٹ وینڈو&
|
||||
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]=Cửa sổ riêng tư mới
|
||||
Name[wo]=Panlanteeru biir bu bees
|
||||
Name[xh]=Ifestile yangasese entsha
|
||||
Name[zh-CN]=新建隐私浏览窗口
|
||||
Name[zh-TW]=新增隱私視窗
|
||||
Exec=icecat-x11 --name icecat-x11 --private-window %u
|
||||
7
icecat-x11.sh.in
Normal file
7
icecat-x11.sh.in
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Run GNU IceCat on X11 backend
|
||||
#
|
||||
|
||||
export MOZ_DISABLE_WAYLAND=1
|
||||
exec /__PREFIX__/bin/icecat "$@"
|
||||
|
|
@ -33,6 +33,10 @@
|
|||
HTTPS Everywhere is an extension that encrypts your communications with many major websites, making your browsing more secure
|
||||
</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 +51,13 @@
|
|||
<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/icecat91.png</image>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sagitter.fedorapeople.org/icecat/icecat-screenshots/icecat1022.png</image>
|
||||
<image>https://sagitter.fedorapeople.org/icecat/icecat-screenshots/icecat91_2.png</image>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sagitter.fedorapeople.org/icecat/icecat-screenshots/icecat1023.png</image>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sagitter.fedorapeople.org/icecat/icecat-screenshots/icecat1024.png</image>
|
||||
<image>https://sagitter.fedorapeople.org/icecat/icecat-screenshots/icecat91_3.png</image>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
<updatecontact>sagitter_at_fedoraproject.org</updatecontact>
|
||||
|
|
|
|||
16
icecat.sh.in
16
icecat.sh.in
|
|
@ -64,7 +64,7 @@ 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"
|
||||
MOZ_LAUNCHER="$MOZ_DIST_BIN/run-icecat.sh"
|
||||
GETENFORCE_FILE="/usr/sbin/getenforce"
|
||||
|
||||
##
|
||||
|
|
@ -269,11 +269,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 "$@"
|
||||
|
|
|
|||
1462
icecat.spec
1462
icecat.spec
File diff suppressed because it is too large
Load diff
13
mozilla-1196777.patch
Normal file
13
mozilla-1196777.patch
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
diff -up firefox-86.0/widget/gtk/nsWindow.cpp.1196777 firefox-86.0/widget/gtk/nsWindow.cpp
|
||||
--- firefox-86.0/widget/gtk/nsWindow.cpp.1196777 2021-02-23 17:52:42.291702566 +0100
|
||||
+++ firefox-86.0/widget/gtk/nsWindow.cpp 2021-02-23 17:57:52.434895984 +0100
|
||||
@@ -195,7 +195,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;
|
||||
|
||||
#if !GTK_CHECK_VERSION(3, 22, 0)
|
||||
typedef enum {
|
||||
496
mozilla-1337988.patch
Normal file
496
mozilla-1337988.patch
Normal file
|
|
@ -0,0 +1,496 @@
|
|||
diff -up firefox-56.0/dom/plugins/base/nsJSNPRuntime.cpp.1337988 firefox-56.0/dom/plugins/base/nsJSNPRuntime.cpp
|
||||
--- firefox-56.0/dom/plugins/base/nsJSNPRuntime.cpp.1337988 2017-09-14 22:15:56.000000000 +0200
|
||||
+++ firefox-56.0/dom/plugins/base/nsJSNPRuntime.cpp 2017-09-25 10:34:11.205611698 +0200
|
||||
@@ -1719,7 +1719,7 @@ NPObjWrapper_ObjectMoved(JSObject *obj,
|
||||
auto entry =
|
||||
static_cast<NPObjWrapperHashEntry*>(sNPObjWrappers->Search(npobj));
|
||||
MOZ_ASSERT(entry && entry->mJSObj);
|
||||
- MOZ_ASSERT(entry->mJSObj == old);
|
||||
+ MOZ_ASSERT(entry->mJSObj.unbarrieredGetPtr() == old);
|
||||
entry->mJSObj = obj;
|
||||
}
|
||||
|
||||
diff -up firefox-56.0/js/ipc/JavaScriptShared.cpp.1337988 firefox-56.0/js/ipc/JavaScriptShared.cpp
|
||||
--- firefox-56.0/js/ipc/JavaScriptShared.cpp.1337988 2017-07-31 18:20:47.000000000 +0200
|
||||
+++ firefox-56.0/js/ipc/JavaScriptShared.cpp 2017-09-25 10:34:11.205611698 +0200
|
||||
@@ -101,7 +101,7 @@ IdToObjectMap::has(const ObjectId& id, c
|
||||
auto p = table_.lookup(id);
|
||||
if (!p)
|
||||
return false;
|
||||
- return p->value() == obj;
|
||||
+ return p->value().unbarrieredGet() == obj;
|
||||
}
|
||||
#endif
|
||||
|
||||
diff -up firefox-56.0/js/public/RootingAPI.h.1337988 firefox-56.0/js/public/RootingAPI.h
|
||||
--- firefox-56.0/js/public/RootingAPI.h.1337988 2017-07-31 18:20:47.000000000 +0200
|
||||
+++ firefox-56.0/js/public/RootingAPI.h 2017-09-25 10:34:11.206611695 +0200
|
||||
@@ -148,6 +148,10 @@ template<typename T>
|
||||
struct PersistentRootedMarker;
|
||||
} /* namespace gc */
|
||||
|
||||
+#define DECLARE_POINTER_COMPARISON_OPS(T) \
|
||||
+ bool operator==(const T& other) const { return get() == other; } \
|
||||
+ bool operator!=(const T& other) const { return get() != other; }
|
||||
+
|
||||
// Important: Return a reference so passing a Rooted<T>, etc. to
|
||||
// something that takes a |const T&| is not a GC hazard.
|
||||
#define DECLARE_POINTER_CONSTREF_OPS(T) \
|
||||
@@ -237,8 +241,6 @@ class Heap : public js::HeapBase<T, Heap
|
||||
static_assert(js::IsHeapConstructibleType<T>::value,
|
||||
"Type T must be a public GC pointer type");
|
||||
public:
|
||||
- using ElementType = T;
|
||||
-
|
||||
Heap() {
|
||||
static_assert(sizeof(T) == sizeof(Heap<T>),
|
||||
"Heap<T> must be binary compatible with T.");
|
||||
@@ -385,8 +387,6 @@ template <typename T>
|
||||
class TenuredHeap : public js::HeapBase<T, TenuredHeap<T>>
|
||||
{
|
||||
public:
|
||||
- using ElementType = T;
|
||||
-
|
||||
TenuredHeap() : bits(0) {
|
||||
static_assert(sizeof(T) == sizeof(TenuredHeap<T>),
|
||||
"TenuredHeap<T> must be binary compatible with T.");
|
||||
@@ -394,6 +394,9 @@ class TenuredHeap : public js::HeapBase<
|
||||
explicit TenuredHeap(T p) : bits(0) { setPtr(p); }
|
||||
explicit TenuredHeap(const TenuredHeap<T>& p) : bits(0) { setPtr(p.getPtr()); }
|
||||
|
||||
+ bool operator==(const TenuredHeap<T>& other) { return bits == other.bits; }
|
||||
+ bool operator!=(const TenuredHeap<T>& other) { return bits != other.bits; }
|
||||
+
|
||||
void setPtr(T newPtr) {
|
||||
MOZ_ASSERT((reinterpret_cast<uintptr_t>(newPtr) & flagsMask) == 0);
|
||||
if (newPtr)
|
||||
@@ -470,8 +473,6 @@ class MOZ_NONHEAP_CLASS Handle : public
|
||||
friend class JS::MutableHandle<T>;
|
||||
|
||||
public:
|
||||
- using ElementType = T;
|
||||
-
|
||||
/* Creates a handle from a handle of a type convertible to T. */
|
||||
template <typename S>
|
||||
MOZ_IMPLICIT Handle(Handle<S> handle,
|
||||
@@ -533,6 +534,7 @@ class MOZ_NONHEAP_CLASS Handle : public
|
||||
MOZ_IMPLICIT Handle(MutableHandle<S>& root,
|
||||
typename mozilla::EnableIf<mozilla::IsConvertible<S, T>::value, int>::Type dummy = 0);
|
||||
|
||||
+ DECLARE_POINTER_COMPARISON_OPS(T);
|
||||
DECLARE_POINTER_CONSTREF_OPS(T);
|
||||
DECLARE_NONPOINTER_ACCESSOR_METHODS(*ptr);
|
||||
|
||||
@@ -559,8 +561,6 @@ template <typename T>
|
||||
class MOZ_STACK_CLASS MutableHandle : public js::MutableHandleBase<T, MutableHandle<T>>
|
||||
{
|
||||
public:
|
||||
- using ElementType = T;
|
||||
-
|
||||
inline MOZ_IMPLICIT MutableHandle(Rooted<T>* root);
|
||||
inline MOZ_IMPLICIT MutableHandle(PersistentRooted<T>* root);
|
||||
|
||||
@@ -589,6 +589,7 @@ class MOZ_STACK_CLASS MutableHandle : pu
|
||||
return h;
|
||||
}
|
||||
|
||||
+ DECLARE_POINTER_COMPARISON_OPS(T);
|
||||
DECLARE_POINTER_CONSTREF_OPS(T);
|
||||
DECLARE_NONPOINTER_ACCESSOR_METHODS(*ptr);
|
||||
DECLARE_NONPOINTER_MUTABLE_ACCESSOR_METHODS(*ptr);
|
||||
@@ -805,8 +806,6 @@ class MOZ_RAII Rooted : public js::Roote
|
||||
}
|
||||
|
||||
public:
|
||||
- using ElementType = T;
|
||||
-
|
||||
template <typename RootingContext>
|
||||
explicit Rooted(const RootingContext& cx)
|
||||
: ptr(GCPolicy<T>::initial())
|
||||
@@ -839,6 +838,7 @@ class MOZ_RAII Rooted : public js::Roote
|
||||
ptr = mozilla::Move(value);
|
||||
}
|
||||
|
||||
+ DECLARE_POINTER_COMPARISON_OPS(T);
|
||||
DECLARE_POINTER_CONSTREF_OPS(T);
|
||||
DECLARE_POINTER_ASSIGN_OPS(Rooted, T);
|
||||
DECLARE_NONPOINTER_ACCESSOR_METHODS(ptr);
|
||||
@@ -903,14 +903,13 @@ template <typename T>
|
||||
class MOZ_RAII FakeRooted : public RootedBase<T, FakeRooted<T>>
|
||||
{
|
||||
public:
|
||||
- using ElementType = T;
|
||||
-
|
||||
template <typename CX>
|
||||
explicit FakeRooted(CX* cx) : ptr(JS::GCPolicy<T>::initial()) {}
|
||||
|
||||
template <typename CX>
|
||||
FakeRooted(CX* cx, T initial) : ptr(initial) {}
|
||||
|
||||
+ DECLARE_POINTER_COMPARISON_OPS(T);
|
||||
DECLARE_POINTER_CONSTREF_OPS(T);
|
||||
DECLARE_POINTER_ASSIGN_OPS(FakeRooted, T);
|
||||
DECLARE_NONPOINTER_ACCESSOR_METHODS(ptr);
|
||||
@@ -931,8 +930,6 @@ template <typename T>
|
||||
class FakeMutableHandle : public js::MutableHandleBase<T, FakeMutableHandle<T>>
|
||||
{
|
||||
public:
|
||||
- using ElementType = T;
|
||||
-
|
||||
MOZ_IMPLICIT FakeMutableHandle(T* t) {
|
||||
ptr = t;
|
||||
}
|
||||
@@ -1124,8 +1121,6 @@ class PersistentRooted : public js::Root
|
||||
}
|
||||
|
||||
public:
|
||||
- using ElementType = T;
|
||||
-
|
||||
PersistentRooted() : ptr(GCPolicy<T>::initial()) {}
|
||||
|
||||
explicit PersistentRooted(RootingContext* cx)
|
||||
@@ -1203,6 +1198,7 @@ class PersistentRooted : public js::Root
|
||||
}
|
||||
}
|
||||
|
||||
+ DECLARE_POINTER_COMPARISON_OPS(T);
|
||||
DECLARE_POINTER_CONSTREF_OPS(T);
|
||||
DECLARE_POINTER_ASSIGN_OPS(PersistentRooted, T);
|
||||
DECLARE_NONPOINTER_ACCESSOR_METHODS(ptr);
|
||||
@@ -1234,8 +1230,6 @@ class JS_PUBLIC_API(ObjectPtr)
|
||||
Heap<JSObject*> value;
|
||||
|
||||
public:
|
||||
- using ElementType = JSObject*;
|
||||
-
|
||||
ObjectPtr() : value(nullptr) {}
|
||||
|
||||
explicit ObjectPtr(JSObject* obj) : value(obj) {}
|
||||
@@ -1342,177 +1336,6 @@ Swap(JS::TenuredHeap<T>& aX, JS::Tenured
|
||||
|
||||
} /* namespace mozilla */
|
||||
|
||||
-namespace js {
|
||||
-namespace detail {
|
||||
-
|
||||
-// DefineComparisonOps is a trait which selects which wrapper classes to define
|
||||
-// operator== and operator!= for. It supplies a getter function to extract the
|
||||
-// value to compare. This is used to avoid triggering the automatic read
|
||||
-// barriers where appropriate.
|
||||
-//
|
||||
-// If DefineComparisonOps is not specialized for a particular wrapper you may
|
||||
-// get errors such as 'invalid operands to binary expression' or 'no match for
|
||||
-// operator==' when trying to compare against instances of the wrapper.
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps : mozilla::FalseType {};
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps<JS::Heap<T>> : mozilla::TrueType {
|
||||
- static const T& get(const JS::Heap<T>& v) { return v.unbarrieredGet(); }
|
||||
-};
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps<JS::TenuredHeap<T>> : mozilla::TrueType {
|
||||
- static const T get(const JS::TenuredHeap<T>& v) { return v.unbarrieredGetPtr(); }
|
||||
-};
|
||||
-
|
||||
-template <>
|
||||
-struct DefineComparisonOps<JS::ObjectPtr> : mozilla::TrueType {
|
||||
- static const JSObject* get(const JS::ObjectPtr& v) { return v.unbarrieredGet(); }
|
||||
-};
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps<JS::Rooted<T>> : mozilla::TrueType {
|
||||
- static const T& get(const JS::Rooted<T>& v) { return v.get(); }
|
||||
-};
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps<JS::Handle<T>> : mozilla::TrueType {
|
||||
- static const T& get(const JS::Handle<T>& v) { return v.get(); }
|
||||
-};
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps<JS::MutableHandle<T>> : mozilla::TrueType {
|
||||
- static const T& get(const JS::MutableHandle<T>& v) { return v.get(); }
|
||||
-};
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps<JS::PersistentRooted<T>> : mozilla::TrueType {
|
||||
- static const T& get(const JS::PersistentRooted<T>& v) { return v.get(); }
|
||||
-};
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps<js::FakeRooted<T>> : mozilla::TrueType {
|
||||
- static const T& get(const js::FakeRooted<T>& v) { return v.get(); }
|
||||
-};
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps<js::FakeMutableHandle<T>> : mozilla::TrueType {
|
||||
- static const T& get(const js::FakeMutableHandle<T>& v) { return v.get(); }
|
||||
-};
|
||||
-
|
||||
-} /* namespace detail */
|
||||
-} /* namespace js */
|
||||
-
|
||||
-// Overload operator== and operator!= for all types with the DefineComparisonOps
|
||||
-// trait using the supplied getter.
|
||||
-//
|
||||
-// There are four cases:
|
||||
-
|
||||
-// Case 1: comparison between two wrapper objects.
|
||||
-
|
||||
-template <typename T, typename U>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value &&
|
||||
- js::detail::DefineComparisonOps<U>::value, bool>::Type
|
||||
-operator==(const T& a, const U& b) {
|
||||
- return js::detail::DefineComparisonOps<T>::get(a) == js::detail::DefineComparisonOps<U>::get(b);
|
||||
-}
|
||||
-
|
||||
-template <typename T, typename U>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value &&
|
||||
- js::detail::DefineComparisonOps<U>::value, bool>::Type
|
||||
-operator!=(const T& a, const U& b) {
|
||||
- return !(a == b);
|
||||
-}
|
||||
-
|
||||
-// Case 2: comparison between a wrapper object and its unwrapped element type.
|
||||
-
|
||||
-template <typename T>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value, bool>::Type
|
||||
-operator==(const T& a, const typename T::ElementType& b) {
|
||||
- return js::detail::DefineComparisonOps<T>::get(a) == b;
|
||||
-}
|
||||
-
|
||||
-template <typename T>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value, bool>::Type
|
||||
-operator!=(const T& a, const typename T::ElementType& b) {
|
||||
- return !(a == b);
|
||||
-}
|
||||
-
|
||||
-template <typename T>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value, bool>::Type
|
||||
-operator==(const typename T::ElementType& a, const T& b) {
|
||||
- return a == js::detail::DefineComparisonOps<T>::get(b);
|
||||
-}
|
||||
-
|
||||
-template <typename T>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value, bool>::Type
|
||||
-operator!=(const typename T::ElementType& a, const T& b) {
|
||||
- return !(a == b);
|
||||
-}
|
||||
-
|
||||
-// Case 3: For pointer wrappers, comparison between the wrapper and a const
|
||||
-// element pointer.
|
||||
-
|
||||
-template <typename T>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value &&
|
||||
- mozilla::IsPointer<typename T::ElementType>::value, bool>::Type
|
||||
-operator==(const typename mozilla::RemovePointer<typename T::ElementType>::Type* a, const T& b) {
|
||||
- return a == js::detail::DefineComparisonOps<T>::get(b);
|
||||
-}
|
||||
-
|
||||
-template <typename T>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value &&
|
||||
- mozilla::IsPointer<typename T::ElementType>::value, bool>::Type
|
||||
-operator!=(const typename mozilla::RemovePointer<typename T::ElementType>::Type* a, const T& b) {
|
||||
- return !(a == b);
|
||||
-}
|
||||
-
|
||||
-template <typename T>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value &&
|
||||
- mozilla::IsPointer<typename T::ElementType>::value, bool>::Type
|
||||
-operator==(const T& a, const typename mozilla::RemovePointer<typename T::ElementType>::Type* b) {
|
||||
- return js::detail::DefineComparisonOps<T>::get(a) == b;
|
||||
-}
|
||||
-
|
||||
-template <typename T>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value &&
|
||||
- mozilla::IsPointer<typename T::ElementType>::value, bool>::Type
|
||||
-operator!=(const T& a, const typename mozilla::RemovePointer<typename T::ElementType>::Type* b) {
|
||||
- return !(a == b);
|
||||
-}
|
||||
-
|
||||
-// Case 4: For pointer wrappers, comparison between the wrapper and nullptr.
|
||||
-
|
||||
-template <typename T>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value &&
|
||||
- mozilla::IsPointer<typename T::ElementType>::value, bool>::Type
|
||||
-operator==(std::nullptr_t a, const T& b) {
|
||||
- return a == js::detail::DefineComparisonOps<T>::get(b);
|
||||
-}
|
||||
-
|
||||
-template <typename T>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value &&
|
||||
- mozilla::IsPointer<typename T::ElementType>::value, bool>::Type
|
||||
-operator!=(std::nullptr_t a, const T& b) {
|
||||
- return !(a == b);
|
||||
-}
|
||||
-
|
||||
-template <typename T>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value &&
|
||||
- mozilla::IsPointer<typename T::ElementType>::value, bool>::Type
|
||||
-operator==(const T& a, std::nullptr_t b) {
|
||||
- return js::detail::DefineComparisonOps<T>::get(a) == b;
|
||||
-}
|
||||
-
|
||||
-template <typename T>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value &&
|
||||
- mozilla::IsPointer<typename T::ElementType>::value, bool>::Type
|
||||
-operator!=(const T& a, std::nullptr_t b) {
|
||||
- return !(a == b);
|
||||
-}
|
||||
-
|
||||
#undef DELETE_ASSIGNMENT_OPS
|
||||
|
||||
#endif /* js_RootingAPI_h */
|
||||
diff -up firefox-56.0/js/src/gc/Barrier.h.1337988 firefox-56.0/js/src/gc/Barrier.h
|
||||
--- firefox-56.0/js/src/gc/Barrier.h.1337988 2017-09-14 22:16:01.000000000 +0200
|
||||
+++ firefox-56.0/js/src/gc/Barrier.h 2017-09-25 10:34:11.206611695 +0200
|
||||
@@ -353,8 +353,8 @@ class WriteBarrieredBase : public Barrie
|
||||
explicit WriteBarrieredBase(const T& v) : BarrieredBase<T>(v) {}
|
||||
|
||||
public:
|
||||
- using ElementType = T;
|
||||
|
||||
+ DECLARE_POINTER_COMPARISON_OPS(T);
|
||||
DECLARE_POINTER_CONSTREF_OPS(T);
|
||||
|
||||
// Use this if the automatic coercion to T isn't working.
|
||||
@@ -612,13 +612,14 @@ class ReadBarriered : public ReadBarrier
|
||||
return *this;
|
||||
}
|
||||
|
||||
- const T& get() const {
|
||||
- if (InternalBarrierMethods<T>::isMarkable(this->value))
|
||||
- this->read();
|
||||
+ const T get() const {
|
||||
+ if (!InternalBarrierMethods<T>::isMarkable(this->value))
|
||||
+ return JS::GCPolicy<T>::initial();
|
||||
+ this->read();
|
||||
return this->value;
|
||||
}
|
||||
|
||||
- const T& unbarrieredGet() const {
|
||||
+ const T unbarrieredGet() const {
|
||||
return this->value;
|
||||
}
|
||||
|
||||
@@ -626,9 +627,9 @@ class ReadBarriered : public ReadBarrier
|
||||
return bool(this->value);
|
||||
}
|
||||
|
||||
- operator const T&() const { return get(); }
|
||||
+ operator const T() const { return get(); }
|
||||
|
||||
- const T& operator->() const { return get(); }
|
||||
+ const T operator->() const { return get(); }
|
||||
|
||||
T* unsafeGet() { return &this->value; }
|
||||
T const* unsafeGet() const { return &this->value; }
|
||||
@@ -955,35 +956,6 @@ typedef ReadBarriered<WasmTableObject*>
|
||||
|
||||
typedef ReadBarriered<Value> ReadBarrieredValue;
|
||||
|
||||
-namespace detail {
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps<PreBarriered<T>> : mozilla::TrueType {
|
||||
- static const T& get(const PreBarriered<T>& v) { return v.get(); }
|
||||
-};
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps<GCPtr<T>> : mozilla::TrueType {
|
||||
- static const T& get(const GCPtr<T>& v) { return v.get(); }
|
||||
-};
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps<HeapPtr<T>> : mozilla::TrueType {
|
||||
- static const T& get(const HeapPtr<T>& v) { return v.get(); }
|
||||
-};
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps<ReadBarriered<T>> : mozilla::TrueType {
|
||||
- static const T& get(const ReadBarriered<T>& v) { return v.unbarrieredGet(); }
|
||||
-};
|
||||
-
|
||||
-template <>
|
||||
-struct DefineComparisonOps<HeapSlot> : mozilla::TrueType {
|
||||
- static const Value& get(const HeapSlot& v) { return v.get(); }
|
||||
-};
|
||||
-
|
||||
-} /* namespace detail */
|
||||
-
|
||||
} /* namespace js */
|
||||
|
||||
#endif /* gc_Barrier_h */
|
||||
diff -up firefox-56.0/js/src/jsapi-tests/testGCHeapPostBarriers.cpp.1337988 firefox-56.0/js/src/jsapi-tests/testGCHeapPostBarriers.cpp
|
||||
--- firefox-56.0/js/src/jsapi-tests/testGCHeapPostBarriers.cpp.1337988 2017-09-14 22:16:02.000000000 +0200
|
||||
+++ firefox-56.0/js/src/jsapi-tests/testGCHeapPostBarriers.cpp 2017-09-25 10:34:11.206611695 +0200
|
||||
@@ -5,7 +5,6 @@
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
-#include "mozilla/TypeTraits.h"
|
||||
#include "mozilla/UniquePtr.h"
|
||||
|
||||
#include "js/RootingAPI.h"
|
||||
diff -up firefox-56.0/js/src/vm/SharedMem.h.1337988 firefox-56.0/js/src/vm/SharedMem.h
|
||||
--- firefox-56.0/js/src/vm/SharedMem.h.1337988 2017-06-15 22:52:29.000000000 +0200
|
||||
+++ firefox-56.0/js/src/vm/SharedMem.h 2017-09-25 10:34:11.206611695 +0200
|
||||
@@ -12,8 +12,8 @@
|
||||
template<typename T>
|
||||
class SharedMem
|
||||
{
|
||||
- // static_assert(mozilla::IsPointer<T>::value,
|
||||
- // "SharedMem encapsulates pointer types");
|
||||
+ static_assert(mozilla::IsPointer<T>::value,
|
||||
+ "SharedMem encapsulates pointer types");
|
||||
|
||||
enum Sharedness {
|
||||
IsUnshared,
|
||||
diff -up firefox-56.0/js/xpconnect/src/XPCInlines.h.1337988 firefox-56.0/js/xpconnect/src/XPCInlines.h
|
||||
--- firefox-56.0/js/xpconnect/src/XPCInlines.h.1337988 2017-09-14 22:16:03.000000000 +0200
|
||||
+++ firefox-56.0/js/xpconnect/src/XPCInlines.h 2017-09-25 10:34:11.206611695 +0200
|
||||
@@ -465,7 +465,7 @@ inline
|
||||
void XPCWrappedNativeTearOff::JSObjectMoved(JSObject* obj, const JSObject* old)
|
||||
{
|
||||
MOZ_ASSERT(!IsMarked());
|
||||
- MOZ_ASSERT(mJSObject == old);
|
||||
+ MOZ_ASSERT(mJSObject.unbarrieredGetPtr() == old);
|
||||
mJSObject = obj;
|
||||
}
|
||||
|
||||
diff -up firefox-56.0/js/xpconnect/src/XPCWrappedNative.cpp.1337988 firefox-56.0/js/xpconnect/src/XPCWrappedNative.cpp
|
||||
--- firefox-56.0/js/xpconnect/src/XPCWrappedNative.cpp.1337988 2017-09-14 22:16:03.000000000 +0200
|
||||
+++ firefox-56.0/js/xpconnect/src/XPCWrappedNative.cpp 2017-09-25 10:34:11.207611692 +0200
|
||||
@@ -874,7 +874,7 @@ void
|
||||
XPCWrappedNative::FlatJSObjectMoved(JSObject* obj, const JSObject* old)
|
||||
{
|
||||
JS::AutoAssertGCCallback inCallback;
|
||||
- MOZ_ASSERT(mFlatJSObject == old);
|
||||
+ MOZ_ASSERT(mFlatJSObject.unbarrieredGetPtr() == old);
|
||||
|
||||
nsWrapperCache* cache = nullptr;
|
||||
CallQueryInterface(mIdentity, &cache);
|
||||
diff -up firefox-56.0/js/xpconnect/src/XPCWrappedNativeProto.cpp.1337988 firefox-56.0/js/xpconnect/src/XPCWrappedNativeProto.cpp
|
||||
--- firefox-56.0/js/xpconnect/src/XPCWrappedNativeProto.cpp.1337988 2017-07-31 18:20:47.000000000 +0200
|
||||
+++ firefox-56.0/js/xpconnect/src/XPCWrappedNativeProto.cpp 2017-09-25 10:34:11.207611692 +0200
|
||||
@@ -101,7 +101,7 @@ XPCWrappedNativeProto::CallPostCreatePro
|
||||
void
|
||||
XPCWrappedNativeProto::JSProtoObjectFinalized(js::FreeOp* fop, JSObject* obj)
|
||||
{
|
||||
- MOZ_ASSERT(obj == mJSProtoObject, "huh?");
|
||||
+ MOZ_ASSERT(obj == mJSProtoObject.unbarrieredGet(), "huh?");
|
||||
|
||||
#ifdef DEBUG
|
||||
// Check that this object has already been swept from the map.
|
||||
@@ -117,7 +117,7 @@ XPCWrappedNativeProto::JSProtoObjectFina
|
||||
void
|
||||
XPCWrappedNativeProto::JSProtoObjectMoved(JSObject* obj, const JSObject* old)
|
||||
{
|
||||
- MOZ_ASSERT(mJSProtoObject == old);
|
||||
+ MOZ_ASSERT(mJSProtoObject.unbarrieredGet() == old);
|
||||
mJSProtoObject.init(obj); // Update without triggering barriers.
|
||||
}
|
||||
|
||||
|
|
@ -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();
|
||||
|
|
|
|||
16
mozilla-1516803.patch
Normal file
16
mozilla-1516803.patch
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
diff --git a/security/sandbox/linux/moz.build b/security/sandbox/linux/moz.build
|
||||
--- a/security/sandbox/linux/moz.build
|
||||
+++ b/security/sandbox/linux/moz.build
|
||||
@@ -99,9 +99,8 @@
|
||||
# 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()
|
||||
|
||||
51
mozilla-1580174-webrtc-popup.patch
Normal file
51
mozilla-1580174-webrtc-popup.patch
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp
|
||||
--- a/widget/gtk/nsWindow.cpp
|
||||
+++ b/widget/gtk/nsWindow.cpp
|
||||
@@ -1155,6 +1155,28 @@
|
||||
}
|
||||
}
|
||||
|
||||
+bool IsPopupWithoutToplevelParent(nsMenuPopupFrame* aMenuPopupFrame) {
|
||||
+ // Check if the popup is autocomplete (like tags autocomplete
|
||||
+ // in the bookmark edit popup).
|
||||
+ nsAtom* popupId = aMenuPopupFrame->GetContent()->GetID();
|
||||
+ if (popupId && popupId->Equals(NS_LITERAL_STRING("PopupAutoComplete"))) {
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ // Check if the popup is in popupnotificationcontent (like choosing capture
|
||||
+ // device when starting webrtc session).
|
||||
+ nsIFrame* parentFrame = aMenuPopupFrame->GetParent();
|
||||
+ if (!parentFrame) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ parentFrame = parentFrame->GetParent();
|
||||
+ if (parentFrame && parentFrame->GetContent()->NodeName().EqualsLiteral(
|
||||
+ "popupnotificationcontent")) {
|
||||
+ return true;
|
||||
+ }
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
// Wayland keeps strong popup window hierarchy. We need to track active
|
||||
// (visible) popup windows and make sure we hide popup on the same level
|
||||
// before we open another one on that level. It means that every open
|
||||
@@ -1211,10 +1233,14 @@
|
||||
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).
|
||||
+ // nullptr which means is not a submenu of any other menu.
|
||||
// In this case use a parent given at nsWindow::Create().
|
||||
- if (!parentWindow && !menuPopupFrame->IsContextMenu()) {
|
||||
+ // But we have to avoid using mToplevelParentWindow in case the popup
|
||||
+ // is in 'popupnotificationcontent' element or autocomplete popup,
|
||||
+ // otherwise the popupnotification would disappear when for
|
||||
+ // example opening a popup with microphone selection.
|
||||
+ if (!parentWindow && !menuPopupFrame->IsContextMenu() &&
|
||||
+ !IsPopupWithoutToplevelParent(menuPopupFrame)) {
|
||||
parentWindow =
|
||||
get_window_for_gtk_widget(GTK_WIDGET(mToplevelParentWindow));
|
||||
}
|
||||
|
||||
15
mozilla-1669639.patch
Normal file
15
mozilla-1669639.patch
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
diff -up firefox-81.0.1/build/mach_bootstrap.py.old firefox-81.0.1/build/mach_bootstrap.py
|
||||
--- firefox-81.0.1/build/mach_bootstrap.py.old 2020-10-06 14:16:06.212974910 +0200
|
||||
+++ firefox-81.0.1/build/mach_bootstrap.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)
|
||||
|
||||
14
mozilla-build-arm.patch
Normal file
14
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)
|
||||
12
rhbz-1173156.patch
Normal file
12
rhbz-1173156.patch
Normal 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",
|
||||
23
rhbz-1219542-s390-build.patch
Normal file
23
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,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."
|
||||
|
||||
|
||||
6
sources
6
sources
|
|
@ -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 (cbindgen-vendor.tar.xz) = 99ac9076366d7f567909754635918e61710c3e4d17b00bebb4373bd072fa9fe0d01bbd877074f0cee0893f5db724d6c9db4398fa3e589194bd15d63f5baaa3ae
|
||||
SHA512 (icecat-91.9.1-langpacks.tar.gz) = 56b9d20104254f2546ac4ab5de8f2c3e570632706d329ccf8d0546ec6ee558ac0bf30aa60e921b7b6fac4002dc5bd99e4bfbeff732ffd217131d180f9f5de3f2
|
||||
SHA512 (icecat-91.9.1-rh1.tar.bz2) = 776656eaa8a1eb636708faa96bbfdccef0d8aa1594213bd69acd22f775d50e33904b624400ad11db14e337ba339960c7740725f3e47e2b5d8f3e1ae21ad642d6
|
||||
SHA512 (icecat-COPYING-licensefiles.tar.gz) = ed541845170f1d209e322b0def3248d571e0c42c4a17c74e83197e743bd8a128a1475f5312d905c8e70d047eddeac17e604373892eb6d5f1720c5c361849c42c
|
||||
SHA512 (icecat.png) = a3cec16cb15a27c3c91b53e2c534e78b07911011ff1331e450c0baf8e13b76da7cea2a90e5d75191fa88cfbfd40a0a7f3e553e92b64d0043dadd5ad5edfdf81c
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue