Compare commits
121 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9bb5104466 | ||
|
|
76cf83117e | ||
|
|
877e1d3494 | ||
|
|
e815651b48 | ||
|
|
5c7dc50188 | ||
|
|
c7108086b8 | ||
|
|
67543ab854 | ||
|
|
12620ddec7 | ||
|
|
601940babc | ||
|
|
d0a50452ed | ||
|
|
949daab63a | ||
|
|
0082e2e455 | ||
|
|
dd1ff590fb | ||
|
|
bac41826b0 | ||
|
|
e6c13d721b | ||
|
|
92658a248f | ||
|
|
e6e6897ae4 | ||
|
|
d6489329de | ||
|
|
31e9323f9e | ||
|
|
c66c28f8d6 | ||
|
|
6d1f9dcda7 | ||
|
|
043fa72cdd | ||
|
|
3e712e05b7 | ||
|
|
35e9900c2f | ||
|
|
b2f3ed3cfe | ||
|
|
e42fb72424 | ||
|
|
b37045e88b | ||
|
|
4b1c39c522 | ||
|
|
b3959a29a6 | ||
|
|
7da8ecdbdf | ||
|
|
ae640ad661 | ||
|
|
ad3a48a2cd | ||
|
|
21b334e53d | ||
|
|
e5a96df9ac | ||
|
|
4ce587552c | ||
|
|
1d3f9fe61f | ||
|
|
b371002413 | ||
|
|
d0d7b964dd | ||
|
|
8aad7d0904 | ||
|
|
fb5b31aab6 | ||
|
|
ce1f8ffead | ||
|
|
3d7f8e2c51 | ||
|
|
825d8dec97 | ||
|
|
a0a6912cb2 | ||
|
|
af5987fea7 | ||
|
|
1eb82a1139 | ||
|
|
153e450492 | ||
|
|
2e95703156 | ||
|
|
ed541732a6 | ||
|
|
a3963a5de6 | ||
|
|
48814c0971 | ||
|
|
576f5d64b7 | ||
|
|
f143d871a0 | ||
|
|
9f2bc0fee0 | ||
|
|
8b817ce118 | ||
|
|
8e609e5072 | ||
|
|
5f9ce733b7 | ||
|
|
08d4b41252 | ||
|
|
6b3f455d4f | ||
|
|
a4318122ca | ||
|
|
20f4ffff07 | ||
|
|
8c80932926 | ||
|
|
e29d8d6633 | ||
|
|
8aae756e78 | ||
|
|
6895b2796e | ||
|
|
2b058c423b | ||
|
|
1ef3ae8034 | ||
|
|
3633261b4a | ||
|
|
7d71541527 | ||
|
|
fafac2aff6 | ||
|
|
c7d064dc50 | ||
|
|
4d1fcc9520 | ||
|
|
2a863ee65d | ||
|
|
f2c1a42b4b | ||
|
|
624743709a | ||
|
|
a59842c0bf | ||
|
|
037bec18a5 | ||
|
|
d1b5817a4c | ||
|
|
ff2c86d612 | ||
|
|
21f3241219 | ||
|
|
95b0a6923f | ||
|
|
f040fc0ab8 | ||
|
|
94f70e9d2b | ||
|
|
a075ca1fec | ||
|
|
654d5d1027 | ||
|
|
49a8658099 | ||
|
|
397e2ef821 | ||
|
|
0d3a82d783 | ||
|
|
84112ccf17 | ||
|
|
00bb264463 | ||
|
|
07431212fd | ||
|
|
1499cbc50f | ||
|
|
1f2f0134d4 | ||
|
|
199a717b3c | ||
|
|
8384f31f4f | ||
|
|
0008664082 | ||
|
|
e223a3cc93 | ||
|
|
63e2e731de | ||
|
|
331ec3a977 | ||
|
|
bf05a6d1c9 | ||
|
|
f6f8cc4499 | ||
|
|
be99293fa4 | ||
|
|
66b640dd22 | ||
|
|
925cffd0e5 | ||
|
|
cde761c2a4 | ||
|
|
fc1527d129 | ||
|
|
5ceaf96295 | ||
|
|
c1e0f10b13 | ||
|
|
ac22d825a0 | ||
|
|
87f2b73b90 | ||
|
|
27357afda6 | ||
|
|
fe2bfbe1dc | ||
|
|
6253ffe421 | ||
|
|
c66197e480 | ||
|
|
775cb0ebfd | ||
|
|
fd9745a59a | ||
|
|
31005b53e4 | ||
|
|
dde38c0354 | ||
|
|
68cf0224ae | ||
|
|
84b7afbd5f | ||
|
|
90fab27e53 |
40 changed files with 270 additions and 2648 deletions
67
.gitignore
vendored
67
.gitignore
vendored
|
|
@ -229,3 +229,70 @@
|
|||
/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,21 +6,29 @@ 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
|
||||
|
||||
HTTPS Everywhere is an extension that encrypts your communications with
|
||||
many major websites, making your browsing more secure.
|
||||
* 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).
|
||||
|
|
|
|||
|
|
@ -1,45 +0,0 @@
|
|||
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)
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
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"
|
||||
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
diff -up firefox-97.0/toolkit/moz.configure.disable-elfhack firefox-97.0/toolkit/moz.configure
|
||||
--- firefox-97.0/toolkit/moz.configure.disable-elfhack 2022-02-08 09:58:47.518047952 +0100
|
||||
+++ firefox-97.0/toolkit/moz.configure 2022-02-08 10:17:49.552945956 +0100
|
||||
@@ -1273,7 +1273,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(build_environment)
|
||||
|
|
@ -1,77 +0,0 @@
|
|||
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(),
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
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')
|
||||
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
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,20 +0,0 @@
|
|||
--- a/gfx/2d/Rect.orig..h 2023-01-17 19:49:02.818099401 +0100
|
||||
+++ b/gfx/2d/Rect.h 2023-01-21 17:11:01.695573664 +0100
|
||||
@@ -15,6 +15,7 @@
|
||||
#include "mozilla/Maybe.h"
|
||||
|
||||
#include <cmath>
|
||||
+#include <cstdint>
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
--- a/toolkit/components/telemetry/pingsender/pingsender.orig.cpp 2023-01-17 19:48:16.000000000 +0100
|
||||
+++ b/toolkit/components/telemetry/pingsender/pingsender.cpp 2023-01-21 20:05:29.765527367 +0100
|
||||
@@ -10,6 +10,7 @@
|
||||
#include <iomanip>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
+#include <cstdint>
|
||||
|
||||
#include <zlib.h>
|
||||
|
||||
|
|
@ -1,425 +0,0 @@
|
|||
|
||||
# HG changeset patch
|
||||
# User Alexandre Lissy <lissyx+mozillians@lissyx.dyndns.org>
|
||||
# Date 1639046833 0
|
||||
# Node ID 33f81fb07d792be30dcd1008b21b187ca24f21e6
|
||||
# Parent 3382e4da79289240c4c2fe718b461f7a58bce553
|
||||
Bug 1742849 - Parsing CCache 4.4+ stats output r=mhentges
|
||||
|
||||
Statistics output changed after 4.4 and requires different parsing, as
|
||||
well as an extra --verbose to get the same informations as before.
|
||||
|
||||
See https://github.com/ccache/ccache/commit/8892814e8a790d615e44262c0005513d6d49f9e1
|
||||
|
||||
Differential Revision: https://phabricator.services.mozilla.com/D133086
|
||||
|
||||
diff --git a/python/mozbuild/mozbuild/controller/building.py b/python/mozbuild/mozbuild/controller/building.py
|
||||
--- a/python/mozbuild/mozbuild/controller/building.py
|
||||
+++ b/python/mozbuild/mozbuild/controller/building.py
|
||||
@@ -5,16 +5,17 @@
|
||||
from __future__ import absolute_import, print_function, unicode_literals
|
||||
|
||||
import errno
|
||||
import getpass
|
||||
import io
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
+import re
|
||||
import shutil
|
||||
import six
|
||||
import subprocess
|
||||
import sys
|
||||
import time
|
||||
|
||||
from collections import (
|
||||
Counter,
|
||||
@@ -583,21 +584,24 @@ class BuildMonitor(MozbuildObject):
|
||||
"Swap in/out (MB): {sin}/{sout}",
|
||||
)
|
||||
|
||||
def ccache_stats(self):
|
||||
ccache_stats = None
|
||||
|
||||
ccache = mozfile.which("ccache")
|
||||
if ccache:
|
||||
+ # With CCache v4.4+ statistics might require --verbose
|
||||
+ is_version_4_4_or_newer = CCacheStats.check_version_4_4_or_newer(ccache)
|
||||
try:
|
||||
output = subprocess.check_output(
|
||||
- [ccache, "-s"], universal_newlines=True
|
||||
+ [ccache, "-s" if not is_version_4_4_or_newer else "-sv"],
|
||||
+ universal_newlines=True,
|
||||
)
|
||||
- ccache_stats = CCacheStats(output)
|
||||
+ ccache_stats = CCacheStats(output, is_version_4_4_or_newer)
|
||||
except ValueError as e:
|
||||
self.log(logging.WARNING, "ccache", {"msg": str(e)}, "{msg}")
|
||||
return ccache_stats
|
||||
|
||||
|
||||
class TerminalLoggingHandler(logging.Handler):
|
||||
"""Custom logging handler that works with terminal window dressing.
|
||||
|
||||
@@ -883,33 +887,154 @@ class CCacheStats(object):
|
||||
("cache_files", "files in cache"),
|
||||
("cache_size", "cache size"),
|
||||
("cache_max_size", "max cache size"),
|
||||
]
|
||||
|
||||
DIRECTORY_DESCRIPTION = "cache directory"
|
||||
PRIMARY_CONFIG_DESCRIPTION = "primary config"
|
||||
SECONDARY_CONFIG_DESCRIPTION = "secondary config"
|
||||
+
|
||||
+ STATS_KEYS_4_4 = [
|
||||
+ ("stats_updated", "Summary/Stats updated"),
|
||||
+ (
|
||||
+ "cache_hit_rate",
|
||||
+ "Summary/Hits",
|
||||
+ lambda x: next(iter(re.findall(r"\((.*) %\)", x)), "0.00 %"),
|
||||
+ ),
|
||||
+ (
|
||||
+ "cache_hit_direct",
|
||||
+ "Summary/Hits/Direct",
|
||||
+ lambda x: next(iter(re.findall(r"(\d+)\s+/\s+\d+\s+\(", x)), "0"),
|
||||
+ ),
|
||||
+ (
|
||||
+ "cache_hit_preprocessed",
|
||||
+ "Summary/Hits/Preprocessed",
|
||||
+ lambda x: next(iter(re.findall(r"(\d+)\s+/\s+\d+\s+\(", x)), "0"),
|
||||
+ ),
|
||||
+ ("cache_miss", "Summary/Misses"),
|
||||
+ ("error", "Summary/Errors"),
|
||||
+ ("linking", "Uncacheable/Called for linking"),
|
||||
+ ("preprocessing", "Uncacheable/Called for preprocessing"),
|
||||
+ ("failed", "Uncacheable/Compilation failed"),
|
||||
+ ("preprocessor_error", "Uncacheable/Preprocessing failed"),
|
||||
+ ("cache_file_missing", "Errors/Missing cache file"),
|
||||
+ ("bad_args", "Uncacheable/Bad compiler arguments"),
|
||||
+ ("autoconf", "Uncacheable/Autoconf compile/link"),
|
||||
+ ("no_input", "Uncacheable/No input file"),
|
||||
+ ("num_cleanups", "Primary storage/Cleanups"),
|
||||
+ ("cache_files", "Primary storage/Files"),
|
||||
+ # Cache size is reported in GB, see
|
||||
+ # https://github.com/ccache/ccache/commit/8892814e8a790d615e44262c0005513d6d49f9e1#diff-30ec2bbfafe4c3842c8e35179ef0d3253a66dcc054812e50049d0ca3b10e317fR274
|
||||
+ (
|
||||
+ "cache_size",
|
||||
+ "Primary storage/Cache size (GB)",
|
||||
+ lambda x: str(
|
||||
+ float(next(iter(re.findall(r"(.*)\s+/\s+.*\s+\(", x)), "0"))
|
||||
+ * CCacheStats.GiB
|
||||
+ ),
|
||||
+ True, # Allow to continue evaluation for the next value
|
||||
+ ),
|
||||
+ (
|
||||
+ "cache_max_size",
|
||||
+ "Primary storage/Cache size (GB)",
|
||||
+ lambda x: str(
|
||||
+ float(next(iter(re.findall(r".*\s+/\s+(.*)\s+\(", x)), "0"))
|
||||
+ * CCacheStats.GiB
|
||||
+ ),
|
||||
+ ),
|
||||
+ ]
|
||||
+
|
||||
+ SKIP_KEYS_4_4 = [
|
||||
+ "Summary/Uncacheable",
|
||||
+ "Summary/Misses/Direct",
|
||||
+ "Summary/Misses/Preprocessed",
|
||||
+ "Primary storage/Hits",
|
||||
+ "Primary storage/Misses",
|
||||
+ ]
|
||||
+
|
||||
+ DIRECTORY_DESCRIPTION_4_4 = "Summary/Cache directory"
|
||||
+ PRIMARY_CONFIG_DESCRIPTION_4_4 = "Summary/Primary config"
|
||||
+ SECONDARY_CONFIG_DESCRIPTION_4_4 = "Summary/Secondary config"
|
||||
+
|
||||
ABSOLUTE_KEYS = {"cache_files", "cache_size", "cache_max_size"}
|
||||
FORMAT_KEYS = {"cache_size", "cache_max_size"}
|
||||
|
||||
GiB = 1024 ** 3
|
||||
MiB = 1024 ** 2
|
||||
KiB = 1024
|
||||
|
||||
- def __init__(self, output=None):
|
||||
+ def __init__(self, output=None, is_version_4_4_or_newer=False):
|
||||
"""Construct an instance from the output of ccache -s."""
|
||||
self._values = {}
|
||||
self.cache_dir = ""
|
||||
self.primary_config = ""
|
||||
self.secondary_config = ""
|
||||
|
||||
if not output:
|
||||
return
|
||||
|
||||
+ if is_version_4_4_or_newer:
|
||||
+ self._parse_human_format_4_4_plus(output)
|
||||
+ else:
|
||||
+ self._parse_human_format(output)
|
||||
+
|
||||
+ def _parse_human_format_4_4_plus(self, content):
|
||||
+ head = ""
|
||||
+ subhead = ""
|
||||
+
|
||||
+ for line in content.splitlines():
|
||||
+ name = ""
|
||||
+ if not line:
|
||||
+ continue
|
||||
+ if line.startswith(" "):
|
||||
+ if not line.startswith(" "):
|
||||
+ subhead = line.strip().split(":")[0]
|
||||
+ name = line.strip().split(":")[0]
|
||||
+ raw_value = ":".join(line.split(":")[1:]).strip()
|
||||
+ if raw_value:
|
||||
+ key = head
|
||||
+ if subhead != name:
|
||||
+ key += "/{}".format(subhead)
|
||||
+ key += "/{}".format(name)
|
||||
+ self._parse_line_4_4_plus(key, raw_value)
|
||||
+ else:
|
||||
+ head = line.strip(":")
|
||||
+ subhead = ""
|
||||
+
|
||||
+ def _parse_line_4_4_plus(self, key, value):
|
||||
+ if key.startswith(self.DIRECTORY_DESCRIPTION_4_4):
|
||||
+ self.cache_dir = value
|
||||
+ elif key.startswith(self.PRIMARY_CONFIG_DESCRIPTION_4_4):
|
||||
+ self.primary_config = value
|
||||
+ elif key.startswith(self.SECONDARY_CONFIG_DESCRIPTION_4_4):
|
||||
+ self.secondary_config = value
|
||||
+ else:
|
||||
+ for seq in self.STATS_KEYS_4_4:
|
||||
+ stat_key = seq[0]
|
||||
+ stat_description = seq[1]
|
||||
+ raw_value = value
|
||||
+ if len(seq) > 2:
|
||||
+ raw_value = seq[2](value)
|
||||
+ if stat_key not in self._values and key == stat_description:
|
||||
+ self._values[stat_key] = self._parse_value(raw_value)
|
||||
+
|
||||
+ # We dont want to break when we need to extract two infos
|
||||
+ # from the same line
|
||||
+ if len(seq) < 4:
|
||||
+ break
|
||||
+ else:
|
||||
+ if key not in self.SKIP_KEYS_4_4:
|
||||
+ raise ValueError(
|
||||
+ "Failed to parse ccache stats output: '{}' '{}'".format(
|
||||
+ key, value
|
||||
+ )
|
||||
+ )
|
||||
+
|
||||
+ def _parse_human_format(self, output):
|
||||
for line in output.splitlines():
|
||||
line = line.strip()
|
||||
if line:
|
||||
self._parse_line(line)
|
||||
|
||||
def _parse_line(self, line):
|
||||
line = six.ensure_text(line)
|
||||
if line.startswith(self.DIRECTORY_DESCRIPTION):
|
||||
@@ -1050,6 +1175,29 @@
|
||||
else:
|
||||
return "%.1f Kbytes" % (float(v) / CCacheStats.KiB)
|
||||
|
||||
+ @staticmethod
|
||||
+ def check_version_4_4_or_newer(ccache):
|
||||
+ output_version = subprocess.check_output(
|
||||
+ [ccache, "--version"], universal_newlines=True
|
||||
+ )
|
||||
+ return CCacheStats._is_version_4_4_or_newer(output_version)
|
||||
+
|
||||
+ @staticmethod
|
||||
+ def _is_version_4_4_or_newer(output):
|
||||
+ if "ccache version" not in output:
|
||||
+ return False
|
||||
+
|
||||
+ major = 0
|
||||
+ minor = 0
|
||||
+
|
||||
+ for line in output.splitlines():
|
||||
+ version = re.search(r"ccache version (\d+).(\d+).*", line)
|
||||
+ if version:
|
||||
+ major = int(version.group(1))
|
||||
+ minor = int(version.group(2))
|
||||
+ break
|
||||
+
|
||||
+ return ((major << 8) + minor) >= ((4 << 8) + 4)
|
||||
|
||||
class BuildDriver(MozbuildObject):
|
||||
"""Provides a high-level API for build actions."""
|
||||
diff --git a/python/mozbuild/mozbuild/test/controller/test_ccachestats.py b/python/mozbuild/mozbuild/test/controller/test_ccachestats.py
|
||||
--- a/python/mozbuild/mozbuild/test/controller/test_ccachestats.py
|
||||
+++ b/python/mozbuild/mozbuild/test/controller/test_ccachestats.py
|
||||
@@ -223,16 +223,143 @@ class TestCcacheStats(unittest.TestCase)
|
||||
cleanups performed 3154
|
||||
files in cache 18525
|
||||
cache size 13.4 GB
|
||||
max cache size 15.0 GB
|
||||
""".format(
|
||||
timestamp=time.strftime("%c"), timestamp2=time.strftime("%c")
|
||||
)
|
||||
|
||||
+ VERSION_3_5_GIT = """
|
||||
+ ccache version 3.5.1+2_gf5309092_dirty
|
||||
+
|
||||
+ Copyright (C) 2002-2007 Andrew Tridgell
|
||||
+ Copyright (C) 2009-2019 Joel Rosdahl
|
||||
+
|
||||
+ This program is free software; you can redistribute it and/or modify it under
|
||||
+ the terms of the GNU General Public License as published by the Free Software
|
||||
+ Foundation; either version 3 of the License, or (at your option) any later
|
||||
+ version.
|
||||
+ """
|
||||
+
|
||||
+ VERSION_4_2 = """
|
||||
+ ccache version 4.2.1
|
||||
+
|
||||
+ Copyright (C) 2002-2007 Andrew Tridgell
|
||||
+ Copyright (C) 2009-2021 Joel Rosdahl and other contributors
|
||||
+
|
||||
+ See <https://ccache.dev/credits.html> for a complete list of contributors.
|
||||
+
|
||||
+ This program is free software; you can redistribute it and/or modify it under
|
||||
+ the terms of the GNU General Public License as published by the Free Software
|
||||
+ Foundation; either version 3 of the License, or (at your option) any later
|
||||
+ version.
|
||||
+ """
|
||||
+
|
||||
+ VERSION_4_4 = """
|
||||
+ ccache version 4.4
|
||||
+ Features: file-storage http-storage
|
||||
+
|
||||
+ Copyright (C) 2002-2007 Andrew Tridgell
|
||||
+ Copyright (C) 2009-2021 Joel Rosdahl and other contributors
|
||||
+
|
||||
+ See <https://ccache.dev/credits.html> for a complete list of contributors.
|
||||
+
|
||||
+ This program is free software; you can redistribute it and/or modify it under
|
||||
+ the terms of the GNU General Public License as published by the Free Software
|
||||
+ Foundation; either version 3 of the License, or (at your option) any later
|
||||
+ version.
|
||||
+ """
|
||||
+
|
||||
+ VERSION_4_4_2 = """
|
||||
+ ccache version 4.4.2
|
||||
+ Features: file-storage http-storage
|
||||
+
|
||||
+ Copyright (C) 2002-2007 Andrew Tridgell
|
||||
+ Copyright (C) 2009-2021 Joel Rosdahl and other contributors
|
||||
+
|
||||
+ See <https://ccache.dev/credits.html> for a complete list of contributors.
|
||||
+
|
||||
+ This program is free software; you can redistribute it and/or modify it under
|
||||
+ the terms of the GNU General Public License as published by the Free Software
|
||||
+ Foundation; either version 3 of the License, or (at your option) any later
|
||||
+ version.
|
||||
+ """
|
||||
+
|
||||
+ VERSION_4_5 = """
|
||||
+ ccache version 4.5.1
|
||||
+ Features: file-storage http-storage redis-storage
|
||||
+
|
||||
+ Copyright (C) 2002-2007 Andrew Tridgell
|
||||
+ Copyright (C) 2009-2021 Joel Rosdahl and other contributors
|
||||
+
|
||||
+ See <https://ccache.dev/credits.html> for a complete list of contributors.
|
||||
+
|
||||
+ This program is free software; you can redistribute it and/or modify it under
|
||||
+ the terms of the GNU General Public License as published by the Free Software
|
||||
+ Foundation; either version 3 of the License, or (at your option) any later
|
||||
+ version.
|
||||
+ """
|
||||
+
|
||||
+ STAT10 = """
|
||||
+Summary:
|
||||
+ Cache directory: /home/suer/.ccache
|
||||
+ Primary config: /home/suer/.ccache/ccache.conf
|
||||
+ Secondary config: /etc/ccache.conf
|
||||
+ Stats updated: {timestamp}
|
||||
+ Hits: 916 / 9343 (9.80 %)
|
||||
+ Direct: 197 / 197 (100.0 %)
|
||||
+ Preprocessed: 719 / 719 (100.0 %)
|
||||
+ Misses: 8427
|
||||
+ Direct: 0
|
||||
+ Preprocessed: 0
|
||||
+ Errors: 1
|
||||
+ Uncacheable: 1251
|
||||
+Primary storage:
|
||||
+ Hits: 0 / 0
|
||||
+ Misses: 0
|
||||
+ Cache size (GB): 4.41 / 5.00 (88.27 %)
|
||||
+ Files: 4425
|
||||
+ Cleanups: 161
|
||||
+Errors:
|
||||
+ Missing cache file: 1
|
||||
+Uncacheable:
|
||||
+ Autoconf compile/link: 418
|
||||
+ Bad compiler arguments: 6
|
||||
+ Called for linking: 569
|
||||
+ Called for preprocessing: 110
|
||||
+ Compilation failed: 49
|
||||
+ No input file: 9
|
||||
+ Preprocessing failed: 90
|
||||
+ """.format(
|
||||
+ timestamp=time.strftime("%c")
|
||||
+ )
|
||||
+
|
||||
+ STAT11 = """
|
||||
+Summary:
|
||||
+ Cache directory: /home/suer/.ccache
|
||||
+ Primary config: /home/suer/.ccache/ccache.conf
|
||||
+ Secondary config: /etc/ccache.conf
|
||||
+ Stats updated: {timestamp}
|
||||
+ Hits: 0 / 0
|
||||
+ Direct: 0 / 0
|
||||
+ Preprocessed: 0 / 0
|
||||
+ Misses: 0
|
||||
+ Direct: 0
|
||||
+ Preprocessed: 0
|
||||
+Primary storage:
|
||||
+ Hits: 0 / 0
|
||||
+ Misses: 0
|
||||
+ Cache size (GB): 0.00 / 5.00 (0.00 %)
|
||||
+ Files: 0
|
||||
+ Cleanups: 16
|
||||
+ """.format(
|
||||
+ timestamp=time.strftime("%c")
|
||||
+ )
|
||||
+
|
||||
def test_parse_garbage_stats_message(self):
|
||||
self.assertRaises(ValueError, CCacheStats, self.STAT_GARBAGE)
|
||||
|
||||
def test_parse_zero_stats_message(self):
|
||||
stats = CCacheStats(self.STAT0)
|
||||
self.assertEqual(stats.cache_dir, "/home/tlin/.ccache")
|
||||
self.assertEqual(stats.hit_rates(), (0, 0, 0))
|
||||
|
||||
@@ -290,11 +417,26 @@ class TestCcacheStats(unittest.TestCase)
|
||||
stat8 = CCacheStats(self.STAT8)
|
||||
self.assertTrue(stat8)
|
||||
|
||||
def test_stats_version35(self):
|
||||
# Test parsing 3.5 output.
|
||||
stat9 = CCacheStats(self.STAT9)
|
||||
self.assertTrue(stat9)
|
||||
|
||||
+ def test_stats_version44(self):
|
||||
+ # verify version checks
|
||||
+ self.assertFalse(CCacheStats._is_version_4_4_or_newer(self.VERSION_3_5_GIT))
|
||||
+ self.assertFalse(CCacheStats._is_version_4_4_or_newer(self.VERSION_4_2))
|
||||
+ self.assertTrue(CCacheStats._is_version_4_4_or_newer(self.VERSION_4_4))
|
||||
+ self.assertTrue(CCacheStats._is_version_4_4_or_newer(self.VERSION_4_4_2))
|
||||
+ self.assertTrue(CCacheStats._is_version_4_4_or_newer(self.VERSION_4_5))
|
||||
+
|
||||
+ # Test parsing 4.4+ output.
|
||||
+ stat10 = CCacheStats(self.STAT10, True)
|
||||
+ self.assertTrue(stat10)
|
||||
+
|
||||
+ stat11 = CCacheStats(self.STAT11, True)
|
||||
+ self.assertTrue(stat11)
|
||||
+
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
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
|
||||
|
|
@ -1,76 +0,0 @@
|
|||
--- firefox-111.0.1/build/moz.configure/rust.configure 2023-03-21 06:16:03.000000000 -0700
|
||||
+++ firefox-111.0.1/build/moz.configure/rust.configure.new 2023-04-05 08:57:29.403219120 -0700
|
||||
@@ -593,7 +593,7 @@
|
||||
|
||||
# ==============================================================
|
||||
|
||||
-option(env="RUSTFLAGS", nargs=1, help="Rust compiler flags")
|
||||
+option(env="RUSTFLAGS", nargs=1, help="Rust compiler flags", comma_split=False)
|
||||
set_config("RUSTFLAGS", depends("RUSTFLAGS")(lambda flags: flags))
|
||||
|
||||
|
||||
--- firefox-111.0.1/python/mozbuild/mozbuild/configure/options.py 2023-03-21 06:16:09.000000000 -0700
|
||||
+++ firefox-111.0.1/python/mozbuild/mozbuild/configure/options.py.new 2023-04-05 08:57:31.270193468 -0700
|
||||
@@ -191,6 +191,10 @@
|
||||
to instantiate an option indirectly. Set this to a positive integer to
|
||||
force the script to look into a deeper stack frame when inferring the
|
||||
`category`.
|
||||
+ - `comma_split` specifies whether the value string should be split on
|
||||
+ commas. The default is True. Setting it False is necessary for things
|
||||
+ like compiler flags which should be a single string that may contain
|
||||
+ commas.
|
||||
"""
|
||||
|
||||
__slots__ = (
|
||||
@@ -205,6 +209,7 @@
|
||||
"possible_origins",
|
||||
"category",
|
||||
"define_depth",
|
||||
+ "comma_split",
|
||||
)
|
||||
|
||||
def __init__(
|
||||
@@ -218,6 +223,7 @@
|
||||
category=None,
|
||||
help=None,
|
||||
define_depth=0,
|
||||
+ comma_split=True,
|
||||
):
|
||||
if not name and not env:
|
||||
raise InvalidOptionError(
|
||||
@@ -335,9 +341,10 @@
|
||||
self.choices = choices
|
||||
self.help = help
|
||||
self.category = category or _infer_option_category(define_depth)
|
||||
+ self.comma_split = comma_split
|
||||
|
||||
@staticmethod
|
||||
- def split_option(option):
|
||||
+ def split_option(option, comma_split=True):
|
||||
"""Split a flag or variable into a prefix, a name and values
|
||||
|
||||
Variables come in the form NAME=values (no prefix).
|
||||
@@ -350,7 +357,13 @@
|
||||
|
||||
elements = option.split("=", 1)
|
||||
name = elements[0]
|
||||
- values = tuple(elements[1].split(",")) if len(elements) == 2 else ()
|
||||
+ if len(elements) == 2:
|
||||
+ if comma_split:
|
||||
+ values = tuple(elements[1].split(","))
|
||||
+ else:
|
||||
+ values = (elements[1],)
|
||||
+ else:
|
||||
+ values = ()
|
||||
if name.startswith("--"):
|
||||
name = name[2:]
|
||||
if not name.islower():
|
||||
@@ -426,7 +439,7 @@
|
||||
% (option, origin, ", ".join(self.possible_origins))
|
||||
)
|
||||
|
||||
- prefix, name, values = self.split_option(option)
|
||||
+ prefix, name, values = self.split_option(option, self.comma_split)
|
||||
option = self._join_option(prefix, name)
|
||||
|
||||
assert name in (self.name, self.env)
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
# 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");
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
14
icecat-gcc-always-inline.patch
Normal file
14
icecat-gcc-always-inline.patch
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
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
|
||||
|
|
@ -1,62 +0,0 @@
|
|||
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=102.15.0
|
||||
VERSION=140.7.0
|
||||
URL=https://ftp.mozilla.org/pub/firefox/releases/${VERSION}esr/linux-x86_64/xpi/
|
||||
|
||||
for u in $URL; do
|
||||
|
|
|
|||
115
icecat-pgo.patch
115
icecat-pgo.patch
|
|
@ -1,115 +0,0 @@
|
|||
diff -up firefox-99.0/build/moz.configure/lto-pgo.configure.pgo firefox-99.0/build/moz.configure/lto-pgo.configure
|
||||
--- firefox-99.0/build/moz.configure/lto-pgo.configure.pgo 2022-03-31 01:24:38.000000000 +0200
|
||||
+++ firefox-99.0/build/moz.configure/lto-pgo.configure 2022-04-04 10:15:45.387694143 +0200
|
||||
@@ -247,8 +247,8 @@ def lto(
|
||||
cflags.append("-flto")
|
||||
ldflags.append("-flto")
|
||||
else:
|
||||
- cflags.append("-flto=thin")
|
||||
- ldflags.append("-flto=thin")
|
||||
+ cflags.append("-flto")
|
||||
+ ldflags.append("-flto")
|
||||
|
||||
if target.os == "Android" and value == "cross":
|
||||
# Work around https://github.com/rust-lang/rust/issues/90088
|
||||
@@ -264,7 +264,7 @@ def lto(
|
||||
if value == "full":
|
||||
cflags.append("-flto")
|
||||
else:
|
||||
- cflags.append("-flto=thin")
|
||||
+ cflags.append("-flto")
|
||||
# With clang-cl, -flto can only be used with -c or -fuse-ld=lld.
|
||||
# AC_TRY_LINKs during configure don't have -c, so pass -fuse-ld=lld.
|
||||
cflags.append("-fuse-ld=lld")
|
||||
diff -up firefox-99.0/build/pgo/profileserver.py.pgo firefox-99.0/build/pgo/profileserver.py
|
||||
--- firefox-99.0/build/pgo/profileserver.py.pgo 2022-03-31 01:24:38.000000000 +0200
|
||||
+++ firefox-99.0/build/pgo/profileserver.py 2022-04-04 10:15:45.387694143 +0200
|
||||
@@ -11,7 +11,7 @@
|
||||
import 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
|
||||
@@ -87,9 +87,22 @@
|
||||
locations = ServerLocations()
|
||||
locations.add_host(host="127.0.0.1", port=PORT, options="primary,privileged")
|
||||
|
||||
- old_profraw_files = glob.glob("*.profraw")
|
||||
- for f in old_profraw_files:
|
||||
- os.remove(f)
|
||||
+ using_gcc = False
|
||||
+ try:
|
||||
+ if build.config_environment.substs.get('CC_TYPE') == 'gcc':
|
||||
+ using_gcc = True
|
||||
+ except BuildEnvironmentNotFoundException:
|
||||
+ pass
|
||||
+
|
||||
+ if using_gcc:
|
||||
+ for dirpath, _, filenames in os.walk('.'):
|
||||
+ for f in filenames:
|
||||
+ if f.endswith('.gcda'):
|
||||
+ os.remove(os.path.join(dirpath, f))
|
||||
+ else:
|
||||
+ old_profraw_files = glob.glob('*.profraw')
|
||||
+ for f in old_profraw_files:
|
||||
+ os.remove(f)
|
||||
|
||||
with TemporaryDirectory() as profilePath:
|
||||
# TODO: refactor this into mozprofile
|
||||
@@ -212,6 +225,9 @@
|
||||
if get_crashreports(profilePath, name="IceCat exited successfully?") != 0:
|
||||
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:
|
||||
diff -up firefox-99.0/build/unix/mozconfig.unix.pgo firefox-99.0/build/unix/mozconfig.unix
|
||||
--- firefox-99.0/build/unix/mozconfig.unix.pgo 2022-03-31 01:24:38.000000000 +0200
|
||||
+++ firefox-99.0/build/unix/mozconfig.unix 2022-04-04 10:15:45.387694143 +0200
|
||||
@@ -4,6 +4,15 @@ if [ -n "$FORCE_GCC" ]; then
|
||||
CC="$MOZ_FETCHES_DIR/gcc/bin/gcc"
|
||||
CXX="$MOZ_FETCHES_DIR/gcc/bin/g++"
|
||||
|
||||
+ if [ -n "$MOZ_PGO" ]; then
|
||||
+ if [ -z "$USE_ARTIFACT" ]; then
|
||||
+ ac_add_options --enable-lto
|
||||
+ fi
|
||||
+ export AR="$topsrcdir/gcc/bin/gcc-ar"
|
||||
+ export NM="$topsrcdir/gcc/bin/gcc-nm"
|
||||
+ export RANLIB="$topsrcdir/gcc/bin/gcc-ranlib"
|
||||
+ fi
|
||||
+
|
||||
# We want to make sure we use binutils and other binaries in the tooltool
|
||||
# package.
|
||||
mk_add_options "export PATH=$MOZ_FETCHES_DIR/gcc/bin:$PATH"
|
||||
diff -up firefox-99.0/extensions/spellcheck/src/moz.build.pgo firefox-99.0/extensions/spellcheck/src/moz.build
|
||||
--- firefox-99.0/extensions/spellcheck/src/moz.build.pgo 2022-03-31 01:24:50.000000000 +0200
|
||||
+++ firefox-99.0/extensions/spellcheck/src/moz.build 2022-04-04 10:15:45.387694143 +0200
|
||||
@@ -28,3 +28,5 @@ EXPORTS.mozilla += [
|
||||
"mozInlineSpellChecker.h",
|
||||
"mozSpellChecker.h",
|
||||
]
|
||||
+
|
||||
+CXXFLAGS += ['-fno-devirtualize']
|
||||
diff -up firefox-99.0/toolkit/components/terminator/nsTerminator.cpp.pgo firefox-99.0/toolkit/components/terminator/nsTerminator.cpp
|
||||
--- firefox-99.0/toolkit/components/terminator/nsTerminator.cpp.pgo 2022-04-04 10:15:45.387694143 +0200
|
||||
+++ firefox-99.0/toolkit/components/terminator/nsTerminator.cpp 2022-04-04 10:19:07.022239556 +0200
|
||||
@@ -466,6 +466,11 @@ void nsTerminator::StartWatchdog() {
|
||||
}
|
||||
#endif
|
||||
|
||||
+ // Disable watchdog for PGO train builds - writting profile information at
|
||||
+ // exit may take time and it is better to make build hang rather than
|
||||
+ // silently produce poorly performing binary.
|
||||
+ crashAfterMS = INT32_MAX;
|
||||
+
|
||||
UniquePtr<Options> options(new Options());
|
||||
// crashAfterTicks is guaranteed to be > 0 as
|
||||
// crashAfterMS >= ADDITIONAL_WAIT_BEFORE_CRASH_MS >> HEARTBEAT_INTERVAL_MS
|
||||
|
||||
|
|
@ -1,93 +0,0 @@
|
|||
--- a/dom/base/usecounters.py.python-open-U 2022-06-28 04:37:00.000000000 +0200
|
||||
+++ b/dom/base/usecounters.py 2022-07-11 19:17:46.266517761 +0200
|
||||
@@ -8,7 +8,7 @@ import re
|
||||
|
||||
def read_conf(conf_filename):
|
||||
# Can't read/write from a single StringIO, so make a new one for reading.
|
||||
- stream = open(conf_filename, "rU")
|
||||
+ stream = open(conf_filename, "r")
|
||||
|
||||
def parse_counters(stream):
|
||||
for line_num, line in enumerate(stream):
|
||||
--- a/python/mozbuild/mozbuild/action/process_define_files.py.python-open-U 2022-06-28 04:37:39.000000000 +0200
|
||||
+++ b/python/mozbuild/mozbuild/action/process_define_files.py 2022-07-11 19:18:24.056417112 +0200
|
||||
@@ -36,7 +36,7 @@ def process_define_file(output, input):
|
||||
) and not config.substs.get("JS_STANDALONE"):
|
||||
config = PartialConfigEnvironment(mozpath.join(topobjdir, "js", "src"))
|
||||
|
||||
- with open(path, "rU") as input:
|
||||
+ with open(path, "r") as input:
|
||||
r = re.compile(
|
||||
"^\s*#\s*(?P<cmd>[a-z]+)(?:\s+(?P<name>\S+)(?:\s+(?P<value>\S+))?)?", re.U
|
||||
)
|
||||
--- a/python/mozbuild/mozbuild/backend/base.py.python-open-U 2022-06-28 04:37:39.000000000 +0200
|
||||
+++ b/python/mozbuild/mozbuild/backend/base.py 2022-07-11 19:18:34.165390187 +0200
|
||||
@@ -272,7 +272,7 @@ class BuildBackend(LoggingMixin):
|
||||
return status
|
||||
|
||||
@contextmanager
|
||||
- def _write_file(self, path=None, fh=None, readmode="rU"):
|
||||
+ def _write_file(self, path=None, fh=None, readmode="r"):
|
||||
"""Context manager to write a file.
|
||||
|
||||
This is a glorified wrapper around FileAvoidWrite with integration to
|
||||
--- a/python/mozbuild/mozbuild/preprocessor.py.python-open-U 2022-06-28 04:37:20.000000000 +0200
|
||||
+++ b/python/mozbuild/mozbuild/preprocessor.py 2022-07-11 19:19:30.677239685 +0200
|
||||
@@ -531,7 +531,7 @@ class Preprocessor:
|
||||
|
||||
if args:
|
||||
for f in args:
|
||||
- with io.open(f, "rU", encoding="utf-8") as input:
|
||||
+ with io.open(f, "r", encoding="utf-8") as input:
|
||||
self.processFile(input=input, output=out)
|
||||
if depfile:
|
||||
mk = Makefile()
|
||||
@@ -860,7 +860,7 @@ class Preprocessor:
|
||||
args = self.applyFilters(args)
|
||||
if not os.path.isabs(args):
|
||||
args = os.path.join(self.curdir, args)
|
||||
- args = io.open(args, "rU", encoding="utf-8")
|
||||
+ args = io.open(args, "r", encoding="utf-8")
|
||||
except Preprocessor.Error:
|
||||
raise
|
||||
except Exception:
|
||||
@@ -914,7 +914,7 @@ class Preprocessor:
|
||||
def preprocess(includes=[sys.stdin], defines={}, output=sys.stdout, marker="#"):
|
||||
pp = Preprocessor(defines=defines, marker=marker)
|
||||
for f in includes:
|
||||
- with io.open(f, "rU", encoding="utf-8") as input:
|
||||
+ with io.open(f, "r", encoding="utf-8") as input:
|
||||
pp.processFile(input=input, output=output)
|
||||
return pp.includes
|
||||
|
||||
--- a/python/mozbuild/mozbuild/util.py.python-open-U 2022-06-28 04:37:40.000000000 +0200
|
||||
+++ b/python/mozbuild/mozbuild/util.py 2022-07-11 19:19:19.903268374 +0200
|
||||
@@ -225,7 +225,7 @@ class FileAvoidWrite(BytesIO):
|
||||
still occur, as well as diff capture if requested.
|
||||
"""
|
||||
|
||||
- def __init__(self, filename, capture_diff=False, dry_run=False, readmode="rU"):
|
||||
+ def __init__(self, filename, capture_diff=False, dry_run=False, readmode="r"):
|
||||
BytesIO.__init__(self)
|
||||
self.name = filename
|
||||
assert type(capture_diff) == bool
|
||||
--- a/python/mozbuild/mozpack/files.py.python-open-U 2022-06-28 04:37:40.000000000 +0200
|
||||
+++ b/python/mozbuild/mozpack/files.py 2022-07-11 19:19:40.372213866 +0200
|
||||
@@ -574,7 +574,7 @@ class PreprocessedFile(BaseFile):
|
||||
pp = Preprocessor(defines=self.defines, marker=self.marker)
|
||||
pp.setSilenceDirectiveWarnings(self.silence_missing_directive_warnings)
|
||||
|
||||
- with _open(self.path, "rU") as input:
|
||||
+ with _open(self.path, "r") as input:
|
||||
with _open(os.devnull, "w") as output:
|
||||
pp.processFile(input=input, output=output)
|
||||
|
||||
@@ -631,7 +631,7 @@ class PreprocessedFile(BaseFile):
|
||||
pp = Preprocessor(defines=self.defines, marker=self.marker)
|
||||
pp.setSilenceDirectiveWarnings(self.silence_missing_directive_warnings)
|
||||
|
||||
- with _open(self.path, "rU") as input:
|
||||
+ with _open(self.path, "r") as input:
|
||||
pp.processFile(input=input, output=dest, depfile=deps_out)
|
||||
|
||||
dest.close()
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
--- thunderbird-91.11.0/xpcom/idl-parser/xpidl/xpidl.py.python-inline-flags 2022-06-28 04:39:56.000000000 +0200
|
||||
+++ thunderbird-91.11.0/xpcom/idl-parser/xpidl/xpidl.py 2022-07-11 21:55:05.287553042 +0200
|
||||
@@ -1563,13 +1563,13 @@ class IDLParser(object):
|
||||
t_ignore = " \t"
|
||||
|
||||
def t_multilinecomment(self, t):
|
||||
- r"/\*(?s).*?\*/"
|
||||
+ r"/\*(?s:.*?)\*/"
|
||||
t.lexer.lineno += t.value.count("\n")
|
||||
if t.value.startswith("/**"):
|
||||
self._doccomments.append(t.value)
|
||||
|
||||
def t_singlelinecomment(self, t):
|
||||
- r"(?m)//.*?$"
|
||||
+ r"(?m://.*?$)"
|
||||
|
||||
def t_IID(self, t):
|
||||
return t
|
||||
@@ -1582,7 +1582,7 @@ class IDLParser(object):
|
||||
return t
|
||||
|
||||
def t_LCDATA(self, t):
|
||||
- r"(?s)%\{[ ]*C\+\+[ ]*\n(?P<cdata>.*?\n?)%\}[ ]*(C\+\+)?"
|
||||
+ r"(?s:%\{[ ]*C\+\+[ ]*\n(?P<cdata>.*?\n?)%\}[ ]*(C\+\+)?)"
|
||||
t.type = "CDATA"
|
||||
t.value = t.lexer.lexmatch.group("cdata")
|
||||
t.lexer.lineno += t.value.count("\n")
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
diff -up firefox-117.0/media/ffvpx/libavcodec/x86/mathops.h.gccfailure firefox-117.0/media/ffvpx/libavcodec/x86/mathops.h
|
||||
--- firefox-117.0/media/ffvpx/libavcodec/x86/mathops.h.gccfailure 2023-08-24 20:33:54.000000000 +0200
|
||||
+++ firefox-117.0/media/ffvpx/libavcodec/x86/mathops.h 2023-08-30 13:04:56.174949736 +0200
|
||||
@@ -35,12 +35,20 @@
|
||||
static av_always_inline av_const int MULL(int a, int b, unsigned shift)
|
||||
{
|
||||
int rt, dummy;
|
||||
+ if (__builtin_constant_p(shift))
|
||||
__asm__ (
|
||||
"imull %3 \n\t"
|
||||
"shrdl %4, %%edx, %%eax \n\t"
|
||||
:"=a"(rt), "=d"(dummy)
|
||||
- :"a"(a), "rm"(b), "ci"((uint8_t)shift)
|
||||
+ :"a"(a), "rm"(b), "i"(shift & 0x1F)
|
||||
);
|
||||
+ else
|
||||
+ __asm__ (
|
||||
+ "imull %3 \n\t"
|
||||
+ "shrdl %4, %%edx, %%eax \n\t"
|
||||
+ :"=a"(rt), "=d"(dummy)
|
||||
+ :"a"(a), "rm"(b), "c"((uint8_t)shift)
|
||||
+ );
|
||||
return rt;
|
||||
}
|
||||
|
||||
@@ -113,19 +121,31 @@ __asm__ volatile(\
|
||||
// avoid +32 for shift optimization (gcc should do that ...)
|
||||
#define NEG_SSR32 NEG_SSR32
|
||||
static inline int32_t NEG_SSR32( int32_t a, int8_t s){
|
||||
+ if (__builtin_constant_p(s))
|
||||
__asm__ ("sarl %1, %0\n\t"
|
||||
: "+r" (a)
|
||||
- : "ic" ((uint8_t)(-s))
|
||||
+ : "i" (-s & 0x1F)
|
||||
);
|
||||
+ else
|
||||
+ __asm__ ("sarl %1, %0\n\t"
|
||||
+ : "+r" (a)
|
||||
+ : "c" ((uint8_t)(-s))
|
||||
+ );
|
||||
return a;
|
||||
}
|
||||
|
||||
#define NEG_USR32 NEG_USR32
|
||||
static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
|
||||
+ if (__builtin_constant_p(s))
|
||||
__asm__ ("shrl %1, %0\n\t"
|
||||
: "+r" (a)
|
||||
- : "ic" ((uint8_t)(-s))
|
||||
+ : "i" (-s & 0x1F)
|
||||
);
|
||||
+ else
|
||||
+ __asm__ ("shrl %1, %0\n\t"
|
||||
+ : "+r" (a)
|
||||
+ : "c" ((uint8_t)(-s))
|
||||
+ );
|
||||
return a;
|
||||
}
|
||||
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
[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
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Run GNU IceCat under Wayland
|
||||
#
|
||||
|
||||
export MOZ_ENABLE_WAYLAND=1
|
||||
exec /__PREFIX__/bin/icecat "$@"
|
||||
|
|
@ -1,338 +0,0 @@
|
|||
[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
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Run GNU IceCat on X11 backend
|
||||
#
|
||||
|
||||
export MOZ_DISABLE_WAYLAND=1
|
||||
exec /__PREFIX__/bin/icecat "$@"
|
||||
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/run-icecat.sh"
|
||||
MOZ_LAUNCHER="$MOZ_DIST_BIN/icecat"
|
||||
GETENFORCE_FILE="/usr/sbin/getenforce"
|
||||
|
||||
##
|
||||
|
|
@ -269,13 +269,11 @@ do
|
|||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Run the browser
|
||||
debugging=0
|
||||
if [ $debugging = 1 ]
|
||||
then
|
||||
echo $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@"
|
||||
fi
|
||||
|
||||
## Allow downgrade because during distro upgrade the build time can be
|
||||
## older in newer version than the previous one.
|
||||
##
|
||||
export MOZ_ALLOW_DOWNGRADE=1
|
||||
|
||||
|
||||
exec $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@"
|
||||
exec $MOZ_PROGRAM "$@"
|
||||
|
|
|
|||
433
icecat.spec
433
icecat.spec
|
|
@ -2,21 +2,14 @@
|
|||
# Set to true if it's going to be submitted as update
|
||||
%global release_build 1
|
||||
|
||||
# Set new source-code build version
|
||||
# This tag indicates a new rebuild for Fedora
|
||||
# Set new source-code build version for Fedora and, not necessarily, for upstream too
|
||||
%global redhat_ver rh1
|
||||
|
||||
# Exclude ARM for the following error:
|
||||
# terminate called after throwing an instance of 'std::bad_alloc'
|
||||
# what(): std::bad_alloc
|
||||
# error: could not compile `gkrust`
|
||||
ExcludeArch: %{arm}
|
||||
ExcludeArch: %{ix86} %{arm}
|
||||
|
||||
# Build is failing because of
|
||||
# include/mozilla/FloatingPoint.h:212:31: error: inlining failed in call to ‘always_inline’ ‘bool mozilla::IsNegativeZero(T) [with T = double]’: indirect function call with a yet undetermined callee
|
||||
%if 0%{?fedora}
|
||||
ExcludeArch: s390x
|
||||
%endif
|
||||
# Bundled cbindgen makes build slow.
|
||||
# Enable only if system cbindgen is not available.
|
||||
%global use_bundled_cbindgen 0
|
||||
|
||||
####################
|
||||
|
||||
|
|
@ -27,45 +20,40 @@ ExcludeArch: s390x
|
|||
# Downgrade optimization
|
||||
%global less_optbuild 0
|
||||
|
||||
# Use mozilla hardening option?
|
||||
%global hardened_build 1
|
||||
####################
|
||||
|
||||
# Build PGO+LTO on x86_64 and aarch64 only due to build issues
|
||||
# on other arches.
|
||||
%ifarch x86_64
|
||||
# Build PGO+LTO on x86_64 and aarch64 only
|
||||
%ifarch x86_64 %{arm64}
|
||||
%if 0%{?release_build}
|
||||
%global build_with_pgo 0
|
||||
%global pgo_wayland 0
|
||||
%global build_with_pgo 1
|
||||
%global pgo_wayland 1
|
||||
%global launch_wayland_compositor 1
|
||||
%else
|
||||
%global build_with_pgo 0
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%global pgo_wayland 0
|
||||
%global launch_wayland_compositor 0
|
||||
%if 0%{?build_with_pgo}
|
||||
%global launch_wayland_compositor 1
|
||||
%endif
|
||||
%endif
|
||||
|
||||
# Disable LTO to work around rhbz#1883904
|
||||
%define _lto_cflags %{nil}
|
||||
####################
|
||||
|
||||
# Active/Deactive language files handling
|
||||
%global build_langpacks 1
|
||||
%bcond_without langpacks
|
||||
|
||||
%if %{with langpacks}
|
||||
%bcond_without langpacks_subpkg
|
||||
%endif
|
||||
|
||||
# Define installation directories
|
||||
%global icecatappdir %{_libdir}/%{name}
|
||||
%global icecat_ver %{name}-%{version}
|
||||
%global icecat_devel %{name}-devel-%{version}
|
||||
|
||||
# Define language files directory
|
||||
%global langpackdir %{icecatappdir}/langpacks
|
||||
|
||||
%global icecat_ver %{name}-%{version}
|
||||
%global icecat_devel %{name}-devel-%{version}
|
||||
|
||||
%global toolkit_gtk3 1
|
||||
|
||||
# Big endian platforms
|
||||
%ifarch ppc64 s390x
|
||||
%ifarch s390x %{power64}
|
||||
# Javascript Intl API is not supported on big endian platforms right now:
|
||||
# https://bugzilla.mozilla.org/show_bug.cgi?id=1322212
|
||||
%global big_endian 1
|
||||
|
|
@ -79,7 +67,7 @@ ExcludeArch: s390x
|
|||
%if %{?system_nss}
|
||||
%global nspr_version 4.32
|
||||
%global nspr_build_version %{nspr_version}
|
||||
%global nss_version 3.88
|
||||
%global nss_version 3.100
|
||||
%global nss_build_version %{nss_version}
|
||||
%endif
|
||||
|
||||
|
|
@ -92,30 +80,30 @@ ExcludeArch: s390x
|
|||
%global libvpx_version 1.8.2
|
||||
%endif
|
||||
|
||||
%global disable_elfhack 1
|
||||
|
||||
# cbingen
|
||||
%global use_bundled_cbindgen 1
|
||||
|
||||
# Use clang?
|
||||
%global build_with_clang 0
|
||||
%bcond_without toolchain_clang
|
||||
|
||||
%if %{with toolchain_clang}
|
||||
%global toolchain clang
|
||||
%endif
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1908792
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=2255254
|
||||
%global __provides_exclude_from ^%{icecatappdir}
|
||||
%global __requires_exclude_from ^%{icecatappdir}
|
||||
%global __requires_exclude ^(%%(find %{buildroot}%{icecatappdir} -name '*.so' | xargs -n1 basename | sort -u | paste -s -d '|' -))
|
||||
|
||||
Name: icecat
|
||||
Epoch: 1
|
||||
Version: 102.15.0
|
||||
Epoch: 4
|
||||
Version: 140.7.0
|
||||
Release: %autorelease -e %{redhat_ver}
|
||||
Summary: GNU version of Firefox browser
|
||||
|
||||
# Tri-licensing scheme for Gnuzilla/IceCat in parentheses, and licenses for the extensions included
|
||||
License: (MPL-1.1 or GPL-2.0-or-later or LGPL-2.1-or-later) and GPL-3.0-or-later and MIT and BSD and ISC and Apache-2.0 and MPL-2.0
|
||||
URL: http://www.gnu.org/software/gnuzilla/
|
||||
License: (MPL-1.1 OR GPL-2.0-or-later OR LGPL-2.1-or-later) AND GPL-3.0-or-later AND MIT AND BSD-4-Clause-UC AND ISC AND Apache-2.0 AND MPL-2.0
|
||||
URL: http://www.gnu.org/software/gnuzilla/
|
||||
|
||||
## Source archive created by scripts based on Gnuzilla files.
|
||||
## Modified files are hosted in a dedicated fork repository:
|
||||
## All modified files are hosted in a dedicated fork repository:
|
||||
## https://gitlab.com/anto.trande/icecat
|
||||
Source0: %{name}-%{version}-%{redhat_ver}.tar.bz2
|
||||
|
||||
|
|
@ -123,7 +111,7 @@ Source2: %{name}.png
|
|||
Source3: %{name}-mozconfig-common
|
||||
|
||||
# Language files downloaded by source7 script
|
||||
%if 0%{?build_langpacks}
|
||||
%if %{with langpacks}
|
||||
Source4: %{name}-%{version}-langpacks.tar.gz
|
||||
%endif
|
||||
|
||||
|
|
@ -136,75 +124,27 @@ Source5: %{name}-COPYING-licensefiles.tar.gz
|
|||
Source7: %{name}-lang_download.sh
|
||||
|
||||
# Desktop files
|
||||
Source9: %{name}-wayland.desktop
|
||||
Source10: %{name}.appdata.xml
|
||||
Source12: %{name}-wayland.sh.in
|
||||
Source13: %{name}.sh.in
|
||||
Source14: %{name}.desktop
|
||||
Source15: %{name}-x11.sh.in
|
||||
Source16: %{name}-x11.desktop
|
||||
|
||||
# cbingen
|
||||
Source17: cbindgen-vendor.tar.xz
|
||||
Source18: node-stdout-nonblocking-wrapper
|
||||
|
||||
Source19: run-wayland-compositor
|
||||
|
||||
# Build patches
|
||||
# Fixes installation of those addons which don't have ID on IceCat ("Cannot find id for addon" error).
|
||||
Patch1: %{name}-fix_addon_installation.patch
|
||||
Patch2: %{name}-commasplit.patch
|
||||
Patch3: mozilla-build-arm.patch
|
||||
Patch4: %{name}-build-arm-libaom.patch
|
||||
Patch5: rhbz-1219542-s390-build.patch
|
||||
|
||||
# If cbindgen=0.24
|
||||
Patch6: mozilla-1773336.patch
|
||||
|
||||
# With clang LLVM 16 rust-bindgen 0.56.0 is too old, combined
|
||||
# https://github.com/rust-lang/rust-bindgen/pull/2319
|
||||
# https://github.com/rust-lang/rust-bindgen/pull/2339
|
||||
Patch7: rust-bindgen-2319-2339.patch
|
||||
|
||||
# Needed with rust 1.70
|
||||
# https://github.com/mozilla/mp4parse-rust/commit/8b5b652d38e007e736bb442ccd5aa5ed699db100
|
||||
Patch8: mp4parse-rust-8b5b652d38e007e736bb442ccd5aa5ed699db100.patch
|
||||
|
||||
Patch40: build-aarch64-skia.patch
|
||||
Patch41: build-disable-elfhack.patch
|
||||
Patch44: build-arm-libopus.patch
|
||||
Patch54: mozilla-1669639.patch
|
||||
|
||||
# Fedora specific patches
|
||||
Patch219: rhbz-1173156.patch
|
||||
Patch220: firefox-nss-version.patch
|
||||
Patch221: firefox-nss-addon-hack.patch
|
||||
Patch223: %{name}-glibc-dynstack.patch
|
||||
Patch224: %{name}-GLIBCXX-fix-for-GCC-12.patch
|
||||
Patch225: %{name}-102.7.0-fix_gcc13_build.patch
|
||||
Patch227: %{name}-rhbz-2235654.patch
|
||||
|
||||
# ARM run-time patch
|
||||
Patch226: rhbz-1354671.patch
|
||||
|
||||
# Upstream patches
|
||||
Patch401: icecat-1742849.patch
|
||||
Patch402: mozilla-1196777.patch
|
||||
Patch403: icecat-python3.11-open-U.patch
|
||||
Patch404: icecat-python3.11-regex-inline-flags.patch
|
||||
Patch412: mozilla-1337988.patch
|
||||
Patch422: mozilla-1580174-webrtc-popup.patch
|
||||
|
||||
# Fix crash on ppc64le (mozilla#1512162)
|
||||
Patch423: mozilla-1512162.patch
|
||||
|
||||
# PGO/LTO patches
|
||||
Patch600: %{name}-pgo.patch
|
||||
Patch602: mozilla-1516803.patch
|
||||
|
||||
#VA-API patches
|
||||
Patch584: firefox-disable-ffvpx-with-vapi.patch
|
||||
Patch585: firefox-vaapi-extra-frames.patch
|
||||
Patch603: %{name}-gcc-always-inline.patch
|
||||
|
||||
BuildRequires: alsa-lib-devel
|
||||
BuildRequires: autoconf213
|
||||
|
|
@ -264,10 +204,12 @@ BuildRequires: nss-static >= %{nss_version}
|
|||
%endif
|
||||
|
||||
BuildRequires: pango-devel
|
||||
BuildRequires: pciutils-libs
|
||||
BuildRequires: pipewire-devel
|
||||
#BuildRequires: python3-devel
|
||||
#BuildRequires: python3-setuptools
|
||||
BuildRequires: python3-devel
|
||||
BuildRequires: python3-setuptools
|
||||
BuildRequires: python3.11-devel
|
||||
BuildRequires: python3-orjson
|
||||
BuildRequires: perl-interpreter
|
||||
BuildRequires: pkgconfig(xrender)
|
||||
BuildRequires: pkgconfig(libstartup-notification-1.0)
|
||||
|
|
@ -276,25 +218,36 @@ BuildRequires: pkgconfig(libcurl)
|
|||
%if %{with pulseaudio}
|
||||
BuildRequires: pulseaudio-libs-devel
|
||||
%endif
|
||||
BuildRequires: yasm
|
||||
BuildRequires: llvm
|
||||
BuildRequires: llvm-devel
|
||||
BuildRequires: clang
|
||||
BuildRequires: clang-libs
|
||||
BuildRequires: clang-devel
|
||||
%if 0%{?build_with_clang}
|
||||
BuildRequires: lld
|
||||
%if 0%{?fedora} >= 42 || 0%{?rhel} >= 10
|
||||
BuildRequires: clang19
|
||||
BuildRequires: clang19-libs
|
||||
BuildRequires: llvm19-devel
|
||||
BuildRequires: compiler-rt19
|
||||
%global llvm_suffix -19
|
||||
%else
|
||||
BuildRequires: clang17
|
||||
BuildRequires: clang17-libs
|
||||
BuildRequires: llvm17-devel
|
||||
BuildRequires: compiler-rt17
|
||||
%global llvm_suffix -17
|
||||
%endif
|
||||
%if "%toolchain" == "clang"
|
||||
BuildRequires: lld
|
||||
%endif
|
||||
BuildRequires: rust
|
||||
BuildRequires: rustfmt
|
||||
|
||||
%if 0%{?pgo_wayland}
|
||||
BuildRequires: xorg-x11-server-Xvfb
|
||||
BuildRequires: mutter
|
||||
BuildRequires: gsettings-desktop-schemas
|
||||
BuildRequires: gnome-settings-daemon
|
||||
BuildRequires: mesa-dri-drivers
|
||||
BuildRequires: mesa-libEGL
|
||||
BuildRequires: xorg-x11-server-Xwayland
|
||||
%endif
|
||||
%if 0%{?build_with_pgo}
|
||||
BuildRequires: xorg-x11-server-Xvfb
|
||||
BuildRequires: dbus-x11
|
||||
BuildRequires: gnome-keyring
|
||||
%endif
|
||||
|
||||
%if 0%{?big_endian}
|
||||
|
|
@ -325,10 +278,13 @@ Extensions included to this version of IceCat:
|
|||
* LibreJS
|
||||
GNU LibreJS aims to address the JavaScript problem described in the article
|
||||
"The JavaScript Trap" of Richard Stallman.
|
||||
|
||||
* HTTPS Everywhere
|
||||
HTTPS Everywhere is an extension that encrypts your communications with
|
||||
many major websites, making your browsing more secure.
|
||||
|
||||
* 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,
|
||||
|
|
@ -340,20 +296,16 @@ Extensions included to this version of IceCat:
|
|||
requested. This implies not downloading feeds, updates, blacklists or any
|
||||
other similar data needed during startup.
|
||||
|
||||
%package x11
|
||||
Summary: GNU IceCat X11 launcher
|
||||
Requires: %{name}%{?_isa}
|
||||
%description x11
|
||||
The %{name}-x11 package contains launcher and desktop file
|
||||
to run GNU IceCat native on X11.
|
||||
|
||||
%package wayland
|
||||
Summary: GNU IceCat Wayland launcher
|
||||
Requires: %{name}%{?_isa}
|
||||
Obsoletes: %{name} < 0:78.6.1-1
|
||||
%description wayland
|
||||
The icecat-wayland package contains launcher and desktop file
|
||||
to run GNU IceCat native on Wayland.
|
||||
%if %{with langpacks_subpkg}
|
||||
%package langpacks
|
||||
Summary: IceCat langpacks
|
||||
Requires: %{name} = 4:%{version}-%{release}
|
||||
%description langpacks
|
||||
The icecat-langpacks package contains all the localization
|
||||
and translations langpack add-ons.
|
||||
%files langpacks -f %{name}.lang
|
||||
%dir %{langpackdir}
|
||||
%endif
|
||||
|
||||
%prep
|
||||
%autosetup -N -n %{name}-%{version}
|
||||
|
|
@ -361,54 +313,21 @@ to run GNU IceCat native on Wayland.
|
|||
# Copy license files
|
||||
tar -xf %{SOURCE5}
|
||||
|
||||
%patch -P 1 -p 1 -b .fix_addon_installation
|
||||
%patch -P 2 -p 1 -b .commasplit
|
||||
%patch -P 3 -p 1 -b .build-arm-libaom
|
||||
%patch -P 4 -p 1 -b .arm
|
||||
%ifarch s390
|
||||
%patch -P 5 -p 1 -b .rhbz-1219542-s390
|
||||
%endif
|
||||
%patch -P 6 -p 1 -b .1773336
|
||||
|
||||
%if 0%{?disable_elfhack}
|
||||
%patch -P 41 -p 1 -b .disable-elfhack
|
||||
%endif
|
||||
|
||||
# Fedora patches
|
||||
%patch -P 219 -p 1 -b .rhbz-1173156
|
||||
%if 0%{?fedora}
|
||||
%patch -P 221 -p 1 -b .firefox-nss-addon-hack
|
||||
%endif
|
||||
%patch -P 224 -p 1 -b .glibcxx
|
||||
%patch -P 225 -p 1 -b .gcc13
|
||||
%patch -P 227 -p 1 -b .backup
|
||||
|
||||
# ARM run-time patch
|
||||
%ifarch aarch64
|
||||
%patch -P 40 -p 1 -b .aarch64-skia
|
||||
# ARM64
|
||||
%ifarch %{arm64}
|
||||
%patch -P 226 -p 1 -b .1354671
|
||||
%endif
|
||||
|
||||
%ifarch %{arm}
|
||||
%patch -P 44 -p 1 -b .build-arm-libopus
|
||||
%endif
|
||||
|
||||
%patch -P 402 -p 1 -b .1196777
|
||||
%ifarch %{power64}
|
||||
%patch -P 423 -p 1 -b .1512162
|
||||
%endif
|
||||
|
||||
#%%patch 584 -p1 -b .firefox-disable-ffvpx-with-vapi
|
||||
#%%patch 585 -p1 -b .firefox-vaapi-extra-frames
|
||||
%patch -P 54 -p 1 -b .1669639
|
||||
|
||||
# PGO patches
|
||||
%if 0%{?build_with_pgo}
|
||||
%if !%{build_with_clang}
|
||||
%patch -P 600 -p 1 -b .pgo
|
||||
%patch -P 602 -p 1 -b .1516803
|
||||
%endif
|
||||
%endif
|
||||
%patch -P 603 -p1 -b .inline
|
||||
|
||||
# Remove default configuration and copy the customized one
|
||||
rm -f .mozconfig
|
||||
|
|
@ -425,7 +344,7 @@ echo "ac_add_options --disable-webrtc" >> .mozconfig
|
|||
|
||||
# Hide DRM Content option
|
||||
# This option does not work on other architectures
|
||||
%ifarch x86_64 %{ix86}
|
||||
%ifarch x86_64
|
||||
echo "ac_add_options --disable-eme" >> .mozconfig
|
||||
%endif
|
||||
|
||||
|
|
@ -461,16 +380,7 @@ echo "ac_add_options --without-system-libvpx" >> .mozconfig
|
|||
|
||||
echo "ac_add_options --with-system-jpeg" >> .mozconfig
|
||||
echo "ac_add_options --enable-ffmpeg" >> .mozconfig
|
||||
|
||||
# This option works on these architectures only
|
||||
%ifarch %{arm}
|
||||
echo "ac_add_options --disable-elf-hack" >> .mozconfig
|
||||
echo "ac_add_options --disable-av1" >> .mozconfig
|
||||
echo 'export NEON_FLAGS=-mfpu=vfpv3-d16' >> .mozconfig
|
||||
%endif
|
||||
%ifnarch %{arm}
|
||||
echo "ac_add_options --enable-av1" >> .mozconfig
|
||||
%endif
|
||||
|
||||
%if 0%{?debug_build}
|
||||
echo "ac_add_options --enable-debug" >> .mozconfig
|
||||
|
|
@ -478,10 +388,6 @@ echo "ac_add_options --disable-optimize" >> .mozconfig
|
|||
echo "ac_add_options --enable-rust-debug" >> .mozconfig
|
||||
%else
|
||||
%global optimize_flags "none"
|
||||
%ifarch %{arm} s390x
|
||||
# ARMv7 need that (rhbz#1426850)
|
||||
%define optimize_flags " -fno-schedule-insns"
|
||||
%endif
|
||||
%if %{?optimize_flags} != "none"
|
||||
echo 'ac_add_options --enable-optimize=%{?optimize_flags}' >> .mozconfig
|
||||
%else
|
||||
|
|
@ -495,11 +401,15 @@ echo "ac_add_options --disable-tests" >> .mozconfig
|
|||
echo "ac_add_options --disable-crashreporter" >> .mozconfig
|
||||
|
||||
# Localization
|
||||
%if 0%{?build_langpacks}
|
||||
%if %{with langpacks}
|
||||
echo "ac_add_options --with-l10n-base=$PWD/l10n" >> .mozconfig
|
||||
%endif
|
||||
|
||||
%ifarch s390x
|
||||
%if "%toolchain" == "clang"
|
||||
echo "ac_add_options --with-libclang-path=`llvm-config%{?llvm_suffix} --libdir`" >> .mozconfig
|
||||
%endif
|
||||
|
||||
%ifarch s390x %{arm64}
|
||||
echo "ac_add_options --disable-jit" >> .mozconfig
|
||||
%endif
|
||||
|
||||
|
|
@ -526,7 +436,6 @@ find extensions/gnu -name cose.manifest -delete
|
|||
%build
|
||||
# cbindgen
|
||||
%if 0%{?use_bundled_cbindgen}
|
||||
|
||||
mkdir -p my_rust_vendor
|
||||
cd my_rust_vendor
|
||||
%{__tar} xf %{SOURCE17}
|
||||
|
|
@ -540,8 +449,15 @@ replace-with = "vendored-sources"
|
|||
directory = "`pwd`/my_rust_vendor"
|
||||
EOL
|
||||
|
||||
# note: if you need to support cargo 1.38 or earlier, you can symlink `config` to `config.toml`
|
||||
pushd .cargo
|
||||
mv config config.toml
|
||||
popd
|
||||
|
||||
env CARGO_HOME=.cargo cargo install cbindgen
|
||||
export PATH=`pwd`/.cargo/bin:$PATH
|
||||
%else
|
||||
export CBINDGEN=/usr/bin/cbindgen
|
||||
%endif
|
||||
|
||||
mkdir %{_buildrootdir}/bin || :
|
||||
|
|
@ -566,11 +482,6 @@ MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-O2/-O0/')
|
|||
# Workaround for mozbz#1531309
|
||||
MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-Werror=format-security//')
|
||||
|
||||
# Use hardened build?
|
||||
%if %{?hardened_build}
|
||||
MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fPIC -Wl,-z,relro -Wl,-z,now"
|
||||
%endif
|
||||
|
||||
%ifarch s390x
|
||||
MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g1/')
|
||||
# If MOZ_DEBUG_FLAGS is empty, firefox's build will default it to "-g" which
|
||||
|
|
@ -579,114 +490,80 @@ MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g1/')
|
|||
export MOZ_DEBUG_FLAGS=" "
|
||||
%endif
|
||||
|
||||
%ifarch %{arm} %{ix86}
|
||||
MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g0/')
|
||||
# If MOZ_DEBUG_FLAGS is empty, firefox's build will default it to "-g" which
|
||||
# overrides the -g1 from line above and breaks building on s390
|
||||
# (OOM when linking, rhbz#1238225)
|
||||
export MOZ_DEBUG_FLAGS=" "
|
||||
%endif
|
||||
|
||||
# We don't wantfirefox to use CK_GCM_PARAMS_V3 in nss
|
||||
# We don't want firefox to use CK_GCM_PARAMS_V3 in nss
|
||||
MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -DNSS_PKCS11_3_0_STRICT"
|
||||
|
||||
%if !0%{?build_with_clang}
|
||||
%ifarch s390x %{power64} aarch64 %{ix86}
|
||||
MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads -Wl,--print-memory-usage"
|
||||
%endif
|
||||
%ifarch %{arm}
|
||||
MOZ_LINK_FLAGS="-Wl,--no-keep-memory"
|
||||
echo "ac_add_options --enable-linker=gold" >> .mozconfig
|
||||
%if "%toolchain" != "clang"
|
||||
%ifarch s390x %{power64} %{arm64}
|
||||
MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads"
|
||||
%endif
|
||||
%endif
|
||||
%ifarch %{arm} %{ix86} s390x
|
||||
|
||||
%ifarch s390x
|
||||
export RUSTFLAGS="-Cdebuginfo=0"
|
||||
%endif
|
||||
|
||||
%ifarch %{arm}
|
||||
# disable hard-coded LTO due to RAM constraints
|
||||
sed -i '/cargo_rustc_flags += -Clto/d' config/makefiles/rust.mk
|
||||
sed -i '/RUSTFLAGS += -Cembed-bitcode=yes/d' config/makefiles/rust.mk
|
||||
sed -i 's/codegen-units=1/codegen-units=16/' config/makefiles/rust.mk
|
||||
|
||||
# make sure "-g0" is the last flag so there's no debug info
|
||||
MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -g0"
|
||||
%endif
|
||||
|
||||
export CFLAGS=$MOZ_OPT_FLAGS
|
||||
export CXXFLAGS="$MOZ_OPT_FLAGS -fpermissive"
|
||||
export LDFLAGS=$MOZ_LINK_FLAGS
|
||||
# error "STL code can only be used with -fno-exceptions"
|
||||
CXXFLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-fexceptions/-fno-exceptions/')
|
||||
export CXXFLAGS="$CXXFLAGS"
|
||||
export CXXFLAGS="$CXXFLAGS -fpermissive -std=gnu++17"
|
||||
|
||||
export CFLAGS="$MOZ_OPT_FLAGS -std=gnu17"
|
||||
export LDFLAGS="%{__global_ldflags} $MOZ_LINK_FLAGS -L%{_libdir} -L%{icecatappdir}"
|
||||
export PREFIX='%{_prefix}'
|
||||
export LIBDIR='%{_libdir}'
|
||||
export PKG_CONFIG='%{_bindir}/pkg-config'
|
||||
export PKG_CONFIG="`which pkg-config`"
|
||||
export PYTHON='%{__python3}'
|
||||
|
||||
%if 0%{?build_with_clang}
|
||||
export LLVM_PROFDATA="llvm-profdata"
|
||||
export AR="llvm-ar"
|
||||
export NM="llvm-nm"
|
||||
export RANLIB="llvm-ranlib"
|
||||
%if "%toolchain" == "clang"
|
||||
echo "export LLVM_PROFDATA=\"llvm-profdata\"" >> .mozconfig
|
||||
echo "export AR=\"llvm-ar\"" >> .mozconfig
|
||||
echo "export NM=\"llvm-nm\"" >> .mozconfig
|
||||
echo "export RANLIB=\"llvm-ranlib\"" >> .mozconfig
|
||||
echo "ac_add_options --enable-linker=lld" >> .mozconfig
|
||||
echo "export CC=clang%{?llvm_suffix}" >> .mozconfig
|
||||
echo "export CXX=clang++%{?llvm_suffix}" >> .mozconfig
|
||||
%else
|
||||
export CC=gcc
|
||||
export CXX=g++
|
||||
export AR="gcc-ar"
|
||||
export NM="gcc-nm"
|
||||
export RANLIB="gcc-ranlib"
|
||||
echo "export CC=gcc" >> .mozconfig
|
||||
echo "export CXX=g++" >> .mozconfig
|
||||
echo "export AR=\"gcc-ar\"" >> .mozconfig
|
||||
echo "export NM=\"gcc-nm\"" >> .mozconfig
|
||||
echo "export RANLIB=\"gcc-ranlib\"" >> .mozconfig
|
||||
%endif
|
||||
|
||||
%if 0%{?build_with_pgo}
|
||||
echo "ac_add_options MOZ_PGO=1" >> .mozconfig
|
||||
# PGO build doesn't work with ccache
|
||||
export CCACHE_DISABLE=1
|
||||
%endif
|
||||
|
||||
# Require 4 GB of RAM per CPU core
|
||||
%global _smp_tasksize_proc 4096
|
||||
%if %{?less_optbuild}
|
||||
MOZ_SMP_FLAGS=-j1
|
||||
echo "mk_add_options MOZ_MAKE_FLAGS=\"-j1\"" >> .mozconfig
|
||||
%else
|
||||
MOZ_SMP_FLAGS=-j1
|
||||
# On x86_64 architectures, Mozilla can build up to 4 jobs at once in parallel,
|
||||
# however builds tend to fail on other arches when building in parallel.
|
||||
%ifarch %{ix86} s390x %{arm} aarch64
|
||||
[ -z "$RPM_BUILD_NCPUS" ] && \
|
||||
RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"
|
||||
[ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2
|
||||
%endif
|
||||
%ifarch x86_64 ppc ppc64 ppc64le
|
||||
[ -z "$RPM_BUILD_NCPUS" ] && \
|
||||
RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"
|
||||
[ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2
|
||||
[ "$RPM_BUILD_NCPUS" -ge 4 ] && MOZ_SMP_FLAGS=-j4
|
||||
[ "$RPM_BUILD_NCPUS" -ge 8 ] && MOZ_SMP_FLAGS=-j8
|
||||
[ "$RPM_BUILD_NCPUS" -ge 16 ] && MOZ_SMP_FLAGS=-j16
|
||||
[ "$RPM_BUILD_NCPUS" -ge 24 ] && MOZ_SMP_FLAGS=-j24
|
||||
[ "$RPM_BUILD_NCPUS" -ge 32 ] && MOZ_SMP_FLAGS=-j32
|
||||
[ "$RPM_BUILD_NCPUS" -ge 64 ] && MOZ_SMP_FLAGS=-j64
|
||||
%endif
|
||||
echo "mk_add_options MOZ_MAKE_FLAGS=\"-j%{_smp_build_ncpus}\"" >> .mozconfig
|
||||
%endif
|
||||
|
||||
echo "mk_add_options MOZ_MAKE_FLAGS=\"$MOZ_SMP_FLAGS\"" >> .mozconfig
|
||||
echo "mk_add_options MOZ_SERVICES_SYNC=1" >> .mozconfig
|
||||
echo "export STRIP=/bin/true" >> .mozconfig
|
||||
|
||||
%if 0%{?launch_wayland_compositor}
|
||||
cp -p %{SOURCE19} .
|
||||
. ./run-wayland-compositor
|
||||
. ./run-wayland-compositor
|
||||
%endif
|
||||
|
||||
%if %{?debug_build}
|
||||
export CARGO_PROFILE_RELEASE_BUILD_OVERRIDE_DEBUG=true
|
||||
%endif
|
||||
|
||||
|
||||
export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system
|
||||
#Use python 3.11 for mach
|
||||
sed -i -e 's|#!/usr/bin/env python3|#!/usr/bin/env python3.11|' mach
|
||||
%if 0%{?build_with_pgo}
|
||||
%if 0%{?pgo_wayland}
|
||||
env | grep "WAYLAND"
|
||||
MOZ_ENABLE_WAYLAND=1 ./mach build -v 2>&1 | cat - && exit 1
|
||||
%else
|
||||
xvfb-run ./mach build 2>&1 | cat - || exit 1
|
||||
%endif
|
||||
%else
|
||||
|
||||
./mach build -v 2>&1 | cat - || exit 1
|
||||
|
||||
%if 0%{?build_with_pgo}
|
||||
kill $MUTTER_PID
|
||||
%endif
|
||||
|
||||
%install
|
||||
|
|
@ -711,24 +588,11 @@ desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE14}
|
|||
rm -rf %{buildroot}%{_bindir}/%{name}
|
||||
%{__sed} -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE13} > %{buildroot}%{_bindir}/%{name}
|
||||
chmod 755 %{buildroot}%{_bindir}/%{name}
|
||||
|
||||
%{__sed} -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE15} > %{buildroot}%{_bindir}/%{name}-x11
|
||||
chmod 755 %{buildroot}%{_bindir}/%{name}-x11
|
||||
desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE16}
|
||||
|
||||
%{__sed} -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE12} > %{buildroot}%{_bindir}/%{name}-wayland
|
||||
chmod 755 %{buildroot}%{_bindir}/%{name}-wayland
|
||||
desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE9}
|
||||
|
||||
#
|
||||
|
||||
##Install man page
|
||||
mkdir -p %{buildroot}%{_mandir}/man1
|
||||
install -p -m 644 %{name}.1 %{buildroot}%{_mandir}/man1/
|
||||
|
||||
##Extract langpacks, make any mods needed, repack the langpack, and install it.
|
||||
%if 0%{?build_langpacks}
|
||||
echo > %{name}.lang
|
||||
%if %{with langpacks}
|
||||
mkdir -p %{buildroot}%{langpackdir}
|
||||
tar xf %{SOURCE4}
|
||||
for langpack in `ls langpacks/*.xpi`; do
|
||||
|
|
@ -789,9 +653,6 @@ ln -sf %{icecatappdir}/%{name}-bin ${RPM_BUILD_ROOT}%{icecatappdir}/%{name}
|
|||
rm -rf ${RPM_BUILD_ROOT}%{icecatappdir}/dictionaries
|
||||
ln -s %{_datadir}/hunspell ${RPM_BUILD_ROOT}%{icecatappdir}/dictionaries
|
||||
|
||||
# Copy over run-icecat.sh
|
||||
cp -p build/unix/run-%{name}.sh %{buildroot}%{icecatappdir}/
|
||||
|
||||
# Remove unused directories
|
||||
rm -rf %{buildroot}%{_libdir}/%{icecat_devel}
|
||||
rm -rf %{buildroot}%{_datadir}/idl/%{icecat_ver}
|
||||
|
|
@ -827,10 +688,11 @@ end
|
|||
appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.appdata.xml
|
||||
desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop
|
||||
|
||||
%if 0%{?build_langpacks}
|
||||
%files -f %{name}.lang
|
||||
%else
|
||||
%if %{with langpacks_subpkg}
|
||||
%files
|
||||
%dir %{langpackdir}
|
||||
%else
|
||||
%files -f %{name}.lang
|
||||
%endif
|
||||
%doc README.* AUTHORS
|
||||
%license LICENSE COPYING-*
|
||||
|
|
@ -838,8 +700,9 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop
|
|||
%{_datadir}/applications/%{name}.desktop
|
||||
%{_datadir}/icons/hicolor/*x*/apps/%{name}*.png
|
||||
%{_metainfodir}/*.appdata.xml
|
||||
%{_mandir}/man1/%{name}*
|
||||
%dir %{icecatappdir}
|
||||
%{icecatappdir}/glxtest
|
||||
%{icecatappdir}/vaapitest
|
||||
%{icecatappdir}/browser/
|
||||
%{icecatappdir}/defaults/
|
||||
%{icecatappdir}/dictionaries
|
||||
|
|
@ -848,22 +711,12 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop
|
|||
%{icecatappdir}/*.so
|
||||
%{icecatappdir}/*.ini
|
||||
%{icecatappdir}/omni.ja
|
||||
%{icecatappdir}/run-icecat.sh
|
||||
%{icecatappdir}/dependentlibs.list
|
||||
%{icecatappdir}/plugin-container
|
||||
%{icecatappdir}/pingsender
|
||||
%{icecatappdir}/gmp-clearkey/
|
||||
%if 0%{?build_langpacks}
|
||||
%dir %{langpackdir}
|
||||
%ifarch %{arm64} riscv64
|
||||
%{icecatappdir}/v4l2test
|
||||
%endif
|
||||
|
||||
%files x11
|
||||
%{_bindir}/%{name}-x11
|
||||
%{_datadir}/applications/%{name}-x11.desktop
|
||||
|
||||
%files wayland
|
||||
%{_bindir}/%{name}-wayland
|
||||
%{_datadir}/applications/%{name}-wayland.desktop
|
||||
|
||||
%changelog
|
||||
%autochangelog
|
||||
|
|
|
|||
|
|
@ -1,14 +0,0 @@
|
|||
diff -up firefox-100.0/widget/gtk/nsWindow.cpp.1196777 firefox-100.0/widget/gtk/nsWindow.cpp
|
||||
--- firefox-100.0/widget/gtk/nsWindow.cpp.1196777 2022-05-02 11:29:06.763325015 +0200
|
||||
+++ firefox-100.0/widget/gtk/nsWindow.cpp 2022-05-02 11:30:49.100717334 +0200
|
||||
@@ -163,7 +163,8 @@ const gint kEvents = GDK_TOUCHPAD_GESTUR
|
||||
GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK |
|
||||
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
|
||||
GDK_SMOOTH_SCROLL_MASK | GDK_TOUCH_MASK | GDK_SCROLL_MASK |
|
||||
- GDK_POINTER_MOTION_MASK | GDK_PROPERTY_CHANGE_MASK;
|
||||
+ GDK_POINTER_MOTION_MASK | GDK_PROPERTY_CHANGE_MASK |
|
||||
+ GDK_FOCUS_CHANGE_MASK;
|
||||
|
||||
/* utility functions */
|
||||
static bool is_mouse_in_window(GdkWindow* aWindow, gdouble aMouseX,
|
||||
|
||||
|
|
@ -1,496 +0,0 @@
|
|||
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,7 +1,6 @@
|
|||
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
|
||||
--- 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 @@
|
||||
MOZ_ALWAYS_INLINE bool GetOutParamSource(uint8_t paramIndex,
|
||||
MutableHandleValue srcp) const;
|
||||
|
||||
|
|
@ -10,7 +9,7 @@ diff -up firefox-68.0.1/js/xpconnect/src/XPCWrappedNative.cpp.1512162 firefox-68
|
|||
|
||||
MOZ_ALWAYS_INLINE bool QueryInterfaceFastPath();
|
||||
|
||||
@@ -1139,7 +1139,7 @@ class MOZ_STACK_CLASS CallMethodHelper f
|
||||
@@ -1102,7 +1102,7 @@
|
||||
|
||||
~CallMethodHelper();
|
||||
|
||||
|
|
@ -19,25 +18,3 @@ diff -up firefox-68.0.1/js/xpconnect/src/XPCWrappedNative.cpp.1512162 firefox-68
|
|||
|
||||
// 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();
|
||||
|
|
|
|||
|
|
@ -1,15 +0,0 @@
|
|||
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
|
||||
@@ -114,9 +114,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()
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
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));
|
||||
}
|
||||
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
--- firefox-81.0.1/build/mach_initialize.py.old 2020-10-06 14:16:06.212974910 +0200
|
||||
+++ firefox-81.0.1/build/mach_initialize.py 2020-10-06 14:19:03.313179557 +0200
|
||||
@@ -507,7 +507,10 @@ class ImportHook(object):
|
||||
# doesn't happen or because it doesn't matter).
|
||||
if not os.path.exists(module.__file__[:-1]):
|
||||
if os.path.exists(module.__file__):
|
||||
- os.remove(module.__file__)
|
||||
+ try:
|
||||
+ os.remove(module.__file__)
|
||||
+ except:
|
||||
+ pass
|
||||
del sys.modules[module.__name__]
|
||||
module = self(name, globals, locals, fromlist, level)
|
||||
|
||||
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
diff -up firefox-101.0.1/gfx/webrender_bindings/webrender_ffi.h.old firefox-101.0.1/gfx/webrender_bindings/webrender_ffi.h
|
||||
--- a/gfx/webrender_bindings/webrender_ffi.h.old 2022-06-09 10:31:16.122495733 +0200
|
||||
+++ b/gfx/webrender_bindings/webrender_ffi.h 2022-06-09 10:31:22.880724352 +0200
|
||||
@@ -73,10 +73,6 @@
|
||||
struct WrPipelineIdAndEpoch;
|
||||
using WrPipelineIdEpochs = nsTArray<WrPipelineIdAndEpoch>;
|
||||
|
||||
-#ifndef CBINDGEN_0_24
|
||||
-const uint64_t ROOT_CLIP_CHAIN = ~0;
|
||||
-#endif
|
||||
-
|
||||
} // namespace wr
|
||||
} // namespace mozilla
|
||||
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
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)
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,12 +0,0 @@
|
|||
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",
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
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
|
||||
|
|
@ -20,21 +20,24 @@ if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
|
|||
# if not found, launch a new one
|
||||
eval `dbus-launch --sh-syntax`
|
||||
fi
|
||||
eval `echo '' | /usr/bin/gnome-keyring-daemon -r -d --unlock --components=secrets`
|
||||
|
||||
if [ -z "$XDG_RUNTIME_DIR" ]; then
|
||||
export XDG_RUNTIME_DIR=$HOME
|
||||
fi
|
||||
|
||||
. xvfb-run -s "-screen 0 1600x1200x24" -n 80 mutter --display=:80 --wayland --nested &
|
||||
export DISPLAY=:80
|
||||
|
||||
if [ -z "$WAYLAND_DISPLAY" ] ; then
|
||||
export WAYLAND_DISPLAY=wayland-0
|
||||
else
|
||||
export WAYLAND_DISPLAY=wayland-1
|
||||
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
|
||||
sleep 10
|
||||
|
||||
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
|
||||
|
|
@ -47,4 +50,11 @@ until [ $retry_count -gt $max_retries ]; do
|
|||
fi
|
||||
done
|
||||
|
||||
env | grep "DISPLAY"
|
||||
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."
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,154 +0,0 @@
|
|||
--- thunderbird-102.11.1/third_party/rust/bindgen/.cargo-checksum.json.rust-bindgen-2319-2339 2023-05-24 00:50:52.000000000 +0200
|
||||
+++ thunderbird-102.11.1/third_party/rust/bindgen/.cargo-checksum.json 2023-06-07 01:11:35.838302019 +0200
|
||||
@@ -1 +1 @@
|
||||
-{"files":{"Cargo.lock":"836e8f8431bd4ebdac9b1251676f6afa755757e401455259fe659e7280be8230","Cargo.toml":"3a585a6e27a177f08dedcb21f7d555e9db58fa158203273b228db91ebee4e6b3","LICENSE":"c23953d9deb0a3312dbeaf6c128a657f3591acee45067612fa68405eaa4525db","README.md":"29fe30d7a2729922b13a578bc8f5eedc808fd0f2ef67a3f12017548baf8f293a","build.rs":"3fe1e534c99df4ee207606794f133fb187c0948e055389f74c904994ecaed38a","csmith-fuzzing/README.md":"7107b70fedb0c0a0cadb3c439a49c1bd0119a6d38dc63b1aecc74d1942256ef2","src/callbacks.rs":"1e5a118b94977938751758ac0495b1d41ce5e280c066614a4a7cbd930f326350","src/clang.rs":"aa0644278a8319506be08904c0f6706fbcdcd72eb1e85564b8c7488bd810e126","src/codegen/bitfield_unit.rs":"a8fb1a2d97a99685106fcaac87d2013f79d2690d6a46ff05ad1e3629b6075664","src/codegen/bitfield_unit_tests.rs":"dd252134118450800b516e375c872e17b4c1aee63a7b8adbe5b2cd53434bbc7e","src/codegen/dyngen.rs":"15149bc927e5b2706f93e52a6b26ef55384b3baf40bfc9bc4343e9820479f26b","src/codegen/error.rs":"5e308b8c54b68511fc8ea2ad15ddac510172c4ff460a80a265336440b0c9653d","src/codegen/helpers.rs":"ea83104addb8af31736aaeb850e10c694cd434befe7ffaaa206208f722d72c58","src/codegen/impl_debug.rs":"1ff9ec754b610c98c757b114c6509473ead0e1a9375e9089a7fa40a41a753709","src/codegen/impl_partialeq.rs":"5e526fd88dd15dd1f04addd3c6ecea1d3da92293fadf04346d6c716791f436f9","src/codegen/mod.rs":"19fd11feefab0ff9ecaf8a01583583008269adce805508fb61b9a8acc49da586","src/codegen/struct_layout.rs":"b62c3569dcfb011daa4d09f1aa9eb732da69546c3deb9f247fa8ce7114dbc7b9","src/extra_assertions.rs":"494534bd4f18b80d89b180c8a93733e6617edcf7deac413e9a73fd6e7bc9ced7","src/features.rs":"fafb85510b1dfc9a41ed71f7d765fca49b236deb4ee567e00204e751362aaf23","src/ir/analysis/derive.rs":"ff4821d810961696008a57ae496f95ebcdc14b4c439fe87d78a84817442fa759","src/ir/analysis/has_destructor.rs":"d9a3a24bd4cabc87cddb0c76d27da1691f8f37ffb8eadf5b5975a1c44dea99c2","src/ir/analysis/has_float.rs":"5242cc07ec4d4bdf5a792e1f8ee5758a87838314917d42dbb9dcfc19620520ce","src/ir/analysis/has_type_param_in_array.rs":"ec3fb67f782abb4c866da91bce3f7ee6f8e2310c47a54065282431b909233f7d","src/ir/analysis/has_vtable.rs":"63e2d0f62171811893615c11453bc7b39438d0d83c3eb444dec2346140d86efe","src/ir/analysis/mod.rs":"2c54f0cd6f3d86cf3fcb07d9d0be06cde839cab4170671c80d806a3f27820faf","src/ir/analysis/sizedness.rs":"17f1f2b6affd025f73853b9b5a76b3f157b5f9e563e9eaa374735fcb84c13308","src/ir/analysis/template_params.rs":"da949976a7fd04d6fc564ea6a77dfdbf4f5bf05db64687ed7a0616cba598a42d","src/ir/annotations.rs":"1c931d7bbba1e1613e9cccaab58d14f75e79b831b5c881e41f5b5257a9cbced7","src/ir/comment.rs":"31d64a49ae3d9c3c348fa2539e03306ca3a23fae429cab452e42b31ecf632145","src/ir/comp.rs":"abaa90e27dc6416f1b8db003f87888e7651d5b46c4d4526153980e5621612e54","src/ir/context.rs":"3a76458a5aa74075a60a5cd752ed59ad3943054f55b017700389f78072935215","src/ir/derive.rs":"e5581852eec87918901a129284b4965aefc8a19394187a8095779a084f28fabe","src/ir/dot.rs":"e25ff72ac174a798894c9673d81bdfb86fa9f4228b34a14ce0dc741a186a52bd","src/ir/enum_ty.rs":"e49e3c6ffc0289584e2f836fe56a4b7ebf6ca3f8b602248141d67b9f533770cc","src/ir/function.rs":"aa454ace56bda8074b2865933282aa124624310c8bc0c994d454f5799f4e88be","src/ir/int.rs":"68a86182743ec338d58e42203364dc7c8970cb7ec3550433ca92f0c9489b4442","src/ir/item.rs":"a71bdacc7419ec86d52ac534158cf4bfa4600e9cbc214c0075766700f5b053b0","src/ir/item_kind.rs":"7666a1ff1b8260978b790a08b4139ab56b5c65714a5652bbcec7faa7443adc36","src/ir/layout.rs":"755e3787c262de434a53a8c326f0e825f95415ed6b0f925c1cddf208ca8e3bc4","src/ir/mod.rs":"713cd537434567003197a123cbae679602c715e976d22f7b23dafd0826ea4c70","src/ir/module.rs":"70cf6ddfeabe6cdc13fdc767c783216c073404848d827e85fc6c2de3a19b5c3f","src/ir/objc.rs":"195fb2a3e4371b90244f3a8f295fd80cc77e0f2daf8fd27e3d8e5b78bd6b55d6","src/ir/template.rs":"44bd7214cf1e7f70e60694115082aac5b8a6c1687fff584cd08cdcfadabc5734","src/ir/traversal.rs":"5ac088277f4dfe2918d81b9294aaee41fd83db8e46def66a05f89de078bf4c49","src/ir/ty.rs":"8f2b970da76850685c4d334289af6dede7742862d7a81f2236115afaa1a92fa9","src/ir/var.rs":"86e9f19403fb9231ba60dec0a04e5b56fe28a37c7a5e6f676c978789c9d93c5a","src/lib.rs":"ed2d0aeb48b28b4a96b8e76a10e00b10cb6cc32c0a686d536f9021463b7ee0e8","src/log_stubs.rs":"6dfdd908b7c6453da416cf232893768f9480e551ca4add0858ef88bf71ee6ceb","src/main.rs":"74e582c37b146090332b1496f5b4bca02c7629d03a4ae40302cb4a723f08e445","src/options.rs":"119358b741601dafc13560856f6e4b4f78b6cd2b19067893c2672ba8f5dc6de1","src/parse.rs":"4ffc54415eadb622ee488603862788c78361ef2c889de25259441a340c2a010f","src/regex_set.rs":"6c46357fb1ee68250e5e017cbf691f340041489ae78599eee7a5665a6ddce27f","src/time.rs":"8efe317e7c6b5ba8e0865ce7b49ca775ee8a02590f4241ef62f647fa3c22b68e"},"package":"2da379dbebc0b76ef63ca68d8fc6e71c0f13e59432e0987e508c1820e6ab5239"}
|
||||
\ No newline at end of file
|
||||
+{"files":{"Cargo.lock":"836e8f8431bd4ebdac9b1251676f6afa755757e401455259fe659e7280be8230","Cargo.toml":"3a585a6e27a177f08dedcb21f7d555e9db58fa158203273b228db91ebee4e6b3","LICENSE":"c23953d9deb0a3312dbeaf6c128a657f3591acee45067612fa68405eaa4525db","README.md":"29fe30d7a2729922b13a578bc8f5eedc808fd0f2ef67a3f12017548baf8f293a","build.rs":"3fe1e534c99df4ee207606794f133fb187c0948e055389f74c904994ecaed38a","csmith-fuzzing/README.md":"7107b70fedb0c0a0cadb3c439a49c1bd0119a6d38dc63b1aecc74d1942256ef2","src/callbacks.rs":"1e5a118b94977938751758ac0495b1d41ce5e280c066614a4a7cbd930f326350","src/clang.rs":"30fdc473ff70dcbc394927d6fb674d70a62c1a3847e855becd988dc476997815","src/codegen/bitfield_unit.rs":"a8fb1a2d97a99685106fcaac87d2013f79d2690d6a46ff05ad1e3629b6075664","src/codegen/bitfield_unit_tests.rs":"dd252134118450800b516e375c872e17b4c1aee63a7b8adbe5b2cd53434bbc7e","src/codegen/dyngen.rs":"15149bc927e5b2706f93e52a6b26ef55384b3baf40bfc9bc4343e9820479f26b","src/codegen/error.rs":"5e308b8c54b68511fc8ea2ad15ddac510172c4ff460a80a265336440b0c9653d","src/codegen/helpers.rs":"ea83104addb8af31736aaeb850e10c694cd434befe7ffaaa206208f722d72c58","src/codegen/impl_debug.rs":"1ff9ec754b610c98c757b114c6509473ead0e1a9375e9089a7fa40a41a753709","src/codegen/impl_partialeq.rs":"5e526fd88dd15dd1f04addd3c6ecea1d3da92293fadf04346d6c716791f436f9","src/codegen/mod.rs":"19fd11feefab0ff9ecaf8a01583583008269adce805508fb61b9a8acc49da586","src/codegen/struct_layout.rs":"b62c3569dcfb011daa4d09f1aa9eb732da69546c3deb9f247fa8ce7114dbc7b9","src/extra_assertions.rs":"494534bd4f18b80d89b180c8a93733e6617edcf7deac413e9a73fd6e7bc9ced7","src/features.rs":"fafb85510b1dfc9a41ed71f7d765fca49b236deb4ee567e00204e751362aaf23","src/ir/analysis/derive.rs":"ff4821d810961696008a57ae496f95ebcdc14b4c439fe87d78a84817442fa759","src/ir/analysis/has_destructor.rs":"d9a3a24bd4cabc87cddb0c76d27da1691f8f37ffb8eadf5b5975a1c44dea99c2","src/ir/analysis/has_float.rs":"5242cc07ec4d4bdf5a792e1f8ee5758a87838314917d42dbb9dcfc19620520ce","src/ir/analysis/has_type_param_in_array.rs":"ec3fb67f782abb4c866da91bce3f7ee6f8e2310c47a54065282431b909233f7d","src/ir/analysis/has_vtable.rs":"63e2d0f62171811893615c11453bc7b39438d0d83c3eb444dec2346140d86efe","src/ir/analysis/mod.rs":"2c54f0cd6f3d86cf3fcb07d9d0be06cde839cab4170671c80d806a3f27820faf","src/ir/analysis/sizedness.rs":"17f1f2b6affd025f73853b9b5a76b3f157b5f9e563e9eaa374735fcb84c13308","src/ir/analysis/template_params.rs":"da949976a7fd04d6fc564ea6a77dfdbf4f5bf05db64687ed7a0616cba598a42d","src/ir/annotations.rs":"1c931d7bbba1e1613e9cccaab58d14f75e79b831b5c881e41f5b5257a9cbced7","src/ir/comment.rs":"31d64a49ae3d9c3c348fa2539e03306ca3a23fae429cab452e42b31ecf632145","src/ir/comp.rs":"232300be66abbbc3d7ef948c24f000dd8a50d78e72aa0e4b2cc43ffd4f800226","src/ir/context.rs":"3a76458a5aa74075a60a5cd752ed59ad3943054f55b017700389f78072935215","src/ir/derive.rs":"e5581852eec87918901a129284b4965aefc8a19394187a8095779a084f28fabe","src/ir/dot.rs":"e25ff72ac174a798894c9673d81bdfb86fa9f4228b34a14ce0dc741a186a52bd","src/ir/enum_ty.rs":"e49e3c6ffc0289584e2f836fe56a4b7ebf6ca3f8b602248141d67b9f533770cc","src/ir/function.rs":"aa454ace56bda8074b2865933282aa124624310c8bc0c994d454f5799f4e88be","src/ir/int.rs":"68a86182743ec338d58e42203364dc7c8970cb7ec3550433ca92f0c9489b4442","src/ir/item.rs":"a71bdacc7419ec86d52ac534158cf4bfa4600e9cbc214c0075766700f5b053b0","src/ir/item_kind.rs":"7666a1ff1b8260978b790a08b4139ab56b5c65714a5652bbcec7faa7443adc36","src/ir/layout.rs":"755e3787c262de434a53a8c326f0e825f95415ed6b0f925c1cddf208ca8e3bc4","src/ir/mod.rs":"713cd537434567003197a123cbae679602c715e976d22f7b23dafd0826ea4c70","src/ir/module.rs":"70cf6ddfeabe6cdc13fdc767c783216c073404848d827e85fc6c2de3a19b5c3f","src/ir/objc.rs":"195fb2a3e4371b90244f3a8f295fd80cc77e0f2daf8fd27e3d8e5b78bd6b55d6","src/ir/template.rs":"44bd7214cf1e7f70e60694115082aac5b8a6c1687fff584cd08cdcfadabc5734","src/ir/traversal.rs":"5ac088277f4dfe2918d81b9294aaee41fd83db8e46def66a05f89de078bf4c49","src/ir/ty.rs":"8d7e7883316245c54e5dfa2fd150df1be2dc559c7df0828da736dd6b18d2165b","src/ir/var.rs":"1e7be8eedba72effa995b48c581504e61e407867d8794a8528975688742b0420","src/lib.rs":"ed2d0aeb48b28b4a96b8e76a10e00b10cb6cc32c0a686d536f9021463b7ee0e8","src/log_stubs.rs":"6dfdd908b7c6453da416cf232893768f9480e551ca4add0858ef88bf71ee6ceb","src/main.rs":"74e582c37b146090332b1496f5b4bca02c7629d03a4ae40302cb4a723f08e445","src/options.rs":"119358b741601dafc13560856f6e4b4f78b6cd2b19067893c2672ba8f5dc6de1","src/parse.rs":"4ffc54415eadb622ee488603862788c78361ef2c889de25259441a340c2a010f","src/regex_set.rs":"6c46357fb1ee68250e5e017cbf691f340041489ae78599eee7a5665a6ddce27f","src/time.rs":"8efe317e7c6b5ba8e0865ce7b49ca775ee8a02590f4241ef62f647fa3c22b68e"},"package":"2da379dbebc0b76ef63ca68d8fc6e71c0f13e59432e0987e508c1820e6ab5239"}
|
||||
\ No newline at end of file
|
||||
--- thunderbird-102.11.1/third_party/rust/bindgen/src/clang.rs.rust-bindgen-2319-2339 2023-05-24 00:50:51.000000000 +0200
|
||||
+++ thunderbird-102.11.1/third_party/rust/bindgen/src/clang.rs 2023-06-07 00:59:18.845709213 +0200
|
||||
@@ -54,6 +54,11 @@ impl Cursor {
|
||||
unsafe { clang_isDeclaration(self.kind()) != 0 }
|
||||
}
|
||||
|
||||
+ /// Is this cursor's referent an anonymous record or so?
|
||||
+ pub fn is_anonymous(&self) -> bool {
|
||||
+ unsafe { clang_Cursor_isAnonymous(self.x) != 0 }
|
||||
+ }
|
||||
+
|
||||
/// Get this cursor's referent's spelling.
|
||||
pub fn spelling(&self) -> String {
|
||||
unsafe { cxstring_into_string(clang_getCursorSpelling(self.x)) }
|
||||
--- thunderbird-102.11.1/third_party/rust/bindgen/src/ir/comp.rs.rust-bindgen-2319-2339 2023-05-24 00:50:52.000000000 +0200
|
||||
+++ thunderbird-102.11.1/third_party/rust/bindgen/src/ir/comp.rs 2023-06-07 00:59:18.846709211 +0200
|
||||
@@ -1372,8 +1372,7 @@ impl CompInfo {
|
||||
|
||||
// A declaration of an union or a struct without name could
|
||||
// also be an unnamed field, unfortunately.
|
||||
- if cur.spelling().is_empty() &&
|
||||
- cur.kind() != CXCursor_EnumDecl
|
||||
+ if cur.is_anonymous() && cur.kind() != CXCursor_EnumDecl
|
||||
{
|
||||
let ty = cur.cur_type();
|
||||
let offset = cur.offset_of_field().ok();
|
||||
--- thunderbird-102.11.1/third_party/rust/bindgen/src/ir/ty.rs.rust-bindgen-2319-2339 2023-05-24 00:50:52.000000000 +0200
|
||||
+++ thunderbird-102.11.1/third_party/rust/bindgen/src/ir/ty.rs 2023-06-07 00:59:18.847709209 +0200
|
||||
@@ -737,7 +737,12 @@ impl Type {
|
||||
|
||||
let layout = ty.fallible_layout(ctx).ok();
|
||||
let cursor = ty.declaration();
|
||||
- let mut name = cursor.spelling();
|
||||
+ let is_anonymous = cursor.is_anonymous();
|
||||
+ let mut name = if is_anonymous {
|
||||
+ None
|
||||
+ } else {
|
||||
+ Some(cursor.spelling()).filter(|n| !n.is_empty())
|
||||
+ };
|
||||
|
||||
debug!(
|
||||
"from_clang_ty: {:?}, ty: {:?}, loc: {:?}",
|
||||
@@ -771,7 +776,7 @@ impl Type {
|
||||
if is_canonical_objcpointer && is_template_type_param {
|
||||
// Objective-C generics are just ids with fancy name.
|
||||
// To keep it simple, just name them ids
|
||||
- name = "id".to_owned();
|
||||
+ name = Some("id".to_owned());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -900,7 +905,7 @@ impl Type {
|
||||
return Err(ParseError::Recurse);
|
||||
}
|
||||
} else {
|
||||
- name = location.spelling();
|
||||
+ name = Some(location.spelling());
|
||||
}
|
||||
|
||||
let complex = CompInfo::from_ty(
|
||||
@@ -942,7 +947,7 @@ impl Type {
|
||||
CXType_Typedef
|
||||
);
|
||||
|
||||
- name = current.spelling();
|
||||
+ name = Some(location.spelling());
|
||||
|
||||
let inner_ty = cur
|
||||
.typedef_type()
|
||||
@@ -1126,10 +1131,10 @@ impl Type {
|
||||
CXType_Enum => {
|
||||
let enum_ = Enum::from_ty(ty, ctx).expect("Not an enum?");
|
||||
|
||||
- if name.is_empty() {
|
||||
+ if !is_anonymous {
|
||||
let pretty_name = ty.spelling();
|
||||
if clang::is_valid_identifier(&pretty_name) {
|
||||
- name = pretty_name;
|
||||
+ name = Some(pretty_name);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1144,12 +1149,12 @@ impl Type {
|
||||
)
|
||||
.expect("Not a complex type?");
|
||||
|
||||
- if name.is_empty() {
|
||||
+ if !is_anonymous {
|
||||
// The pretty-printed name may contain typedefed name,
|
||||
// but may also be "struct (anonymous at .h:1)"
|
||||
let pretty_name = ty.spelling();
|
||||
if clang::is_valid_identifier(&pretty_name) {
|
||||
- name = pretty_name;
|
||||
+ name = Some(pretty_name);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1189,7 +1194,9 @@ impl Type {
|
||||
CXType_ObjCClass | CXType_ObjCInterface => {
|
||||
let interface = ObjCInterface::from_ty(&location, ctx)
|
||||
.expect("Not a valid objc interface?");
|
||||
- name = interface.rust_name();
|
||||
+ if !is_anonymous {
|
||||
+ name = Some(interface.rust_name());
|
||||
+ }
|
||||
TypeKind::ObjCInterface(interface)
|
||||
}
|
||||
CXType_Dependent => {
|
||||
@@ -1207,7 +1214,7 @@ impl Type {
|
||||
}
|
||||
};
|
||||
|
||||
- let name = if name.is_empty() { None } else { Some(name) };
|
||||
+ name = name.filter(|n| !n.is_empty());
|
||||
|
||||
let is_const = ty.is_const() ||
|
||||
(ty.kind() == CXType_ConstantArray &&
|
||||
--- thunderbird-102.11.1/third_party/rust/bindgen/src/ir/ty.rs.rust-bindgen-2319-2339
|
||||
+++ thunderbird-102.11.1/third_party/rust/bindgen/src/ir/ty.rs
|
||||
@@ -1145,8 +1145,7 @@ impl Type {
|
||||
location,
|
||||
None,
|
||||
ctx,
|
||||
- )
|
||||
- .expect("Not able to resolve vector element?");
|
||||
+ )?;
|
||||
TypeKind::Vector(inner, ty.num_elements().unwrap())
|
||||
}
|
||||
CXType_ConstantArray => {
|
||||
--- thunderbird-102.11.1/third_party/rust/bindgen/src/ir/var.rs.rust-bindgen-2319-2339
|
||||
+++ thunderbird-102.11.1/third_party/rust/bindgen/src/ir/var.rs
|
||||
@@ -293,11 +293,11 @@ impl ClangSubItemParser for Var {
|
||||
let ty = match Item::from_ty(&ty, cursor, None, ctx) {
|
||||
Ok(ty) => ty,
|
||||
Err(e) => {
|
||||
- assert_eq!(
|
||||
- ty.kind(),
|
||||
- CXType_Auto,
|
||||
+ assert!(
|
||||
+ matches!(ty.kind(), CXType_Auto | CXType_Unexposed),
|
||||
"Couldn't resolve constant type, and it \
|
||||
- wasn't an nondeductible auto type!"
|
||||
+ wasn't an nondeductible auto type or unexposed \
|
||||
+ type!"
|
||||
);
|
||||
return Err(e);
|
||||
}
|
||||
6
sources
6
sources
|
|
@ -1,5 +1,5 @@
|
|||
SHA512 (cbindgen-vendor.tar.xz) = 9cb2a3007939aa2eae5e94b1adf2040d1fdbee9e1ce4367175f79e716e6a02e976c4053452b93c9b8c12cd19ffc4c7cb8ab66b1e97b1a90a64dfbff92698c792
|
||||
SHA512 (icecat-102.15.0-langpacks.tar.gz) = c660922676463c2f384adf413af1aa3b16457e9ea308e348d3eea81daf407465ae350f864e02f186337134f6f2f2cdfa386d18dbad5ccb7831fed52d20e13fd0
|
||||
SHA512 (icecat-102.15.0-rh1.tar.bz2) = 25891798ff791a2ea50f8a342a3bde99a297b68769990549afd9cd4e289795014b9d5858e2e1e5a0a471a05755fc1acc57113f3e38558e4e1baa507ec4066953
|
||||
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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue