Compare commits
No commits in common. "rawhide" and "f38" have entirely different histories.
32 changed files with 2387 additions and 231 deletions
53
.gitignore
vendored
53
.gitignore
vendored
|
|
@ -243,56 +243,3 @@
|
|||
/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
|
||||
|
|
|
|||
22
build-aarch64-skia.patch
Normal file
22
build-aarch64-skia.patch
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
--- a/gfx/skia/skia/modules/skcms/src/Transform_inl.h.aarch64-skia 2023-06-02 03:15:22.000000000 +0200
|
||||
+++ b/gfx/skia/skia/modules/skcms/src/Transform_inl.h 2023-06-05 10:18:46.942777997 +0200
|
||||
@@ -189,8 +189,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)
|
||||
--- a/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h.aarch64-skia 2023-06-05 10:18:46.941777963 +0200
|
||||
+++ b/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h 2023-06-05 10:20:44.924843847 +0200
|
||||
@@ -1128,7 +1128,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 sk_bit_cast<U16>(vcvt_f16_f32(f));
|
||||
|
||||
12
build-arm-libopus.patch
Normal file
12
build-arm-libopus.patch
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
diff -up firefox-66.0/media/libopus/silk/arm/arm_silk_map.c.old firefox-66.0/media/libopus/silk/arm/arm_silk_map.c
|
||||
--- firefox-66.0/media/libopus/silk/arm/arm_silk_map.c.old 2019-03-12 21:07:35.356677522 +0100
|
||||
+++ firefox-66.0/media/libopus/silk/arm/arm_silk_map.c 2019-03-12 21:07:42.937693394 +0100
|
||||
@@ -28,7 +28,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||
# include "config.h"
|
||||
#endif
|
||||
|
||||
-#include "main_FIX.h"
|
||||
+#include "fixed/main_FIX.h"
|
||||
#include "NSQ.h"
|
||||
#include "SigProc_FIX.h"
|
||||
|
||||
11
build-disable-elfhack.patch
Normal file
11
build-disable-elfhack.patch
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
--- firefox-115.0.2/toolkit/moz.configure.disable-elfhack 2023-07-18 12:21:22.507358334 +0200
|
||||
+++ firefox-115.0.2/toolkit/moz.configure 2023-07-18 12:52:55.972727498 +0200
|
||||
@@ -1520,7 +1520,7 @@ with only_when("--enable-compile-environ
|
||||
"Cannot enable elfhack with lld."
|
||||
" Use --enable-linker=bfd, --enable-linker=gold, or --disable-elf-hack"
|
||||
)
|
||||
- return True
|
||||
+ return False
|
||||
|
||||
set_config("USE_ELF_HACK", use_elf_hack)
|
||||
|
||||
12
firefox-nss-version.patch
Normal file
12
firefox-nss-version.patch
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
diff -up firefox-78.0/toolkit/moz.configure.nss-version firefox-78.0/toolkit/moz.configure
|
||||
--- firefox-78.0/toolkit/moz.configure.nss-version 2020-06-30 08:47:09.657501414 +0200
|
||||
+++ firefox-78.0/toolkit/moz.configure 2020-06-30 08:47:12.652510169 +0200
|
||||
@@ -2089,7 +2089,7 @@ option('--with-system-nss', help='Use sy
|
||||
|
||||
imply_option('--with-system-nspr', True, when='--with-system-nss')
|
||||
|
||||
-nss_pkg = pkg_check_modules('NSS', 'nss >= 3.53.1', when='--with-system-nss', config=False)
|
||||
+nss_pkg = pkg_check_modules('NSS', 'nss >= 3.53.0', when='--with-system-nss', config=False)
|
||||
|
||||
set_config('MOZ_SYSTEM_NSS', True, when='--with-system-nss')
|
||||
|
||||
425
icecat-1742849.patch
Normal file
425
icecat-1742849.patch
Normal file
|
|
@ -0,0 +1,425 @@
|
|||
|
||||
# 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()
|
||||
|
||||
|
||||
76
icecat-commasplit.patch
Normal file
76
icecat-commasplit.patch
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
--- 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)
|
||||
36
icecat-fix_addon_installation.patch
Normal file
36
icecat-fix_addon_installation.patch
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
# Fixes installation of those addons which don't have ID on IceCat ("Cannot find id for addon" error).
|
||||
--- a/toolkit/mozapps/extensions/internal/XPIInstall.jsm
|
||||
+++ b/toolkit/mozapps/extensions/internal/XPIInstall.jsm
|
||||
@@ -627,8 +627,30 @@
|
||||
throw new Error(`Extension is signed with an invalid id (${addon.id})`);
|
||||
}
|
||||
}
|
||||
- if (!addon.id && aLocation.isTemporary) {
|
||||
- addon.id = generateTemporaryInstallID(aPackage.file);
|
||||
+ if (!addon.id) {
|
||||
+ if (aInstallLocation.name == KEY_APP_TEMPORARY) {
|
||||
+ addon.id = generateTemporaryInstallID(aZipReader.file);
|
||||
+ } else {
|
||||
+ try {
|
||||
+ let sigInput = aZipReader.getInputStream("META-INF/cose.sig");
|
||||
+ let sigBinary = Cc['@mozilla.org/binaryinputstream;1']
|
||||
+ .createInstance(Ci.nsIBinaryInputStream);
|
||||
+ sigBinary.setInputStream(sigInput);
|
||||
+ var sig = ''
|
||||
+ var sigCount;
|
||||
+ while ((sigCount = sigBinary.available()) > 0) {
|
||||
+ sig += sigBinary.readBytes(sigCount);
|
||||
+ }
|
||||
+ let sigMatch = sig.match(/\{\w{8}-\w{4}-\w{4}-\w{4}-\w{12}\}/g)
|
||||
+ if (sigMatch && sigMatch.length == 1) {
|
||||
+ addon.id = sigMatch[0]
|
||||
+ } else {
|
||||
+ logger.warn("Failed to find addon id");
|
||||
+ }
|
||||
+ } catch (e) {
|
||||
+ logger.warn("Failed to process META-INF/cose.sig");
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
diff -up firefox-114.0.2/gfx/wr/swgl/src/gl.cc.inline firefox-114.0.2/gfx/wr/swgl/src/gl.cc
|
||||
--- firefox-114.0.2/gfx/wr/swgl/src/gl.cc.inline 2023-06-22 11:08:53.294593327 +0200
|
||||
+++ firefox-114.0.2/gfx/wr/swgl/src/gl.cc 2023-06-22 11:12:43.663486734 +0200
|
||||
@@ -58,9 +58,7 @@ WINBASEAPI BOOL WINAPI QueryPerformanceF
|
||||
}
|
||||
|
||||
#else
|
||||
-// GCC is slower when dealing with always_inline, especially in debug builds.
|
||||
-// When using Clang, use always_inline more aggressively.
|
||||
-# if defined(__clang__) || defined(NDEBUG)
|
||||
+# if defined(__clang__) || defined (__GNUC__) || defined(NDEBUG)
|
||||
# define ALWAYS_INLINE __attribute__((always_inline)) inline
|
||||
# else
|
||||
# define ALWAYS_INLINE inline
|
||||
62
icecat-glibc-dynstack.patch
Normal file
62
icecat-glibc-dynstack.patch
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
diff -ur a/js/xpconnect/src/XPCJSContext.cpp b/js/xpconnect/src/XPCJSContext.cpp
|
||||
--- a/js/xpconnect/src/XPCJSContext.cpp 2021-07-05 21:16:02.000000000 +0200
|
||||
+++ b/js/xpconnect/src/XPCJSContext.cpp 2021-07-19 15:01:24.083460460 +0200
|
||||
@@ -81,14 +81,6 @@
|
||||
using namespace JS;
|
||||
using mozilla::dom::AutoEntryScript;
|
||||
|
||||
-// The watchdog thread loop is pretty trivial, and should not require much stack
|
||||
-// space to do its job. So only give it 32KiB or the platform minimum.
|
||||
-#if !defined(PTHREAD_STACK_MIN)
|
||||
-# define PTHREAD_STACK_MIN 0
|
||||
-#endif
|
||||
-static constexpr size_t kWatchdogStackSize =
|
||||
- PTHREAD_STACK_MIN < 32 * 1024 ? 32 * 1024 : PTHREAD_STACK_MIN;
|
||||
-
|
||||
static void WatchdogMain(void* arg);
|
||||
class Watchdog;
|
||||
class WatchdogManager;
|
||||
@@ -161,7 +153,7 @@
|
||||
// watchdog, we need to join it on shutdown.
|
||||
mThread = PR_CreateThread(PR_USER_THREAD, WatchdogMain, this,
|
||||
PR_PRIORITY_NORMAL, PR_GLOBAL_THREAD,
|
||||
- PR_JOINABLE_THREAD, kWatchdogStackSize);
|
||||
+ PR_JOINABLE_THREAD, 0);
|
||||
if (!mThread) {
|
||||
MOZ_CRASH("PR_CreateThread failed!");
|
||||
}
|
||||
diff -ur a/security/sandbox/linux/launch/SandboxLaunch.cpp b/security/sandbox/linux/launch/SandboxLaunch.cpp
|
||||
--- a/security/sandbox/linux/launch/SandboxLaunch.cpp 2021-07-05 18:20:36.000000000 +0200
|
||||
+++ b/security/sandbox/linux/launch/SandboxLaunch.cpp 2021-07-20 08:39:17.272136982 +0200
|
||||
@@ -489,7 +489,8 @@ static int CloneCallee(void* aPtr) {
|
||||
// we don't currently support sandboxing under valgrind.
|
||||
MOZ_NEVER_INLINE MOZ_ASAN_BLACKLIST static pid_t DoClone(int aFlags,
|
||||
jmp_buf* aCtx) {
|
||||
- uint8_t miniStack[PTHREAD_STACK_MIN];
|
||||
+ static constexpr size_t kStackAlignment = 16;
|
||||
+ uint8_t miniStack[4096] __attribute__((aligned(kStackAlignment)));
|
||||
#ifdef __hppa__
|
||||
void* stackPtr = miniStack;
|
||||
#else
|
||||
@@ -510,13 +511,19 @@ static pid_t ForkWithFlags(int aFlags) {
|
||||
CLONE_CHILD_CLEARTID;
|
||||
MOZ_RELEASE_ASSERT((aFlags & kBadFlags) == 0);
|
||||
|
||||
+ // Block signals due to small stack in DoClone.
|
||||
+ sigset_t oldSigs;
|
||||
+ BlockAllSignals(&oldSigs);
|
||||
+
|
||||
+ int ret = 0;
|
||||
jmp_buf ctx;
|
||||
if (setjmp(ctx) == 0) {
|
||||
// In the parent and just called setjmp:
|
||||
- return DoClone(aFlags | SIGCHLD, &ctx);
|
||||
+ ret = DoClone(aFlags | SIGCHLD, &ctx);
|
||||
}
|
||||
+ RestoreSignals(&oldSigs);
|
||||
// In the child and have longjmp'ed:
|
||||
- return 0;
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
static bool WriteStringToFile(const char* aPath, const char* aStr,
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
VERSION=140.7.0
|
||||
VERSION=115.8.0
|
||||
URL=https://ftp.mozilla.org/pub/firefox/releases/${VERSION}esr/linux-x86_64/xpi/
|
||||
|
||||
for u in $URL; do
|
||||
|
|
|
|||
115
icecat-pgo.patch
Normal file
115
icecat-pgo.patch
Normal file
|
|
@ -0,0 +1,115 @@
|
|||
diff -up firefox-99.0/build/moz.configure/lto-pgo.configure.pgo firefox-99.0/build/moz.configure/lto-pgo.configure
|
||||
--- firefox-99.0/build/moz.configure/lto-pgo.configure.pgo 2022-03-31 01:24:38.000000000 +0200
|
||||
+++ firefox-99.0/build/moz.configure/lto-pgo.configure 2022-04-04 10:15:45.387694143 +0200
|
||||
@@ -247,8 +247,8 @@ def lto(
|
||||
cflags.append("-flto")
|
||||
ldflags.append("-flto")
|
||||
else:
|
||||
- cflags.append("-flto=thin")
|
||||
- ldflags.append("-flto=thin")
|
||||
+ cflags.append("-flto")
|
||||
+ ldflags.append("-flto")
|
||||
|
||||
if target.os == "Android" and value == "cross":
|
||||
# Work around https://github.com/rust-lang/rust/issues/90088
|
||||
@@ -264,7 +264,7 @@ def lto(
|
||||
if value == "full":
|
||||
cflags.append("-flto")
|
||||
else:
|
||||
- cflags.append("-flto=thin")
|
||||
+ cflags.append("-flto")
|
||||
# With clang-cl, -flto can only be used with -c or -fuse-ld=lld.
|
||||
# AC_TRY_LINKs during configure don't have -c, so pass -fuse-ld=lld.
|
||||
cflags.append("-fuse-ld=lld")
|
||||
diff -up firefox-99.0/build/pgo/profileserver.py.pgo firefox-99.0/build/pgo/profileserver.py
|
||||
--- firefox-99.0/build/pgo/profileserver.py.pgo 2022-03-31 01:24:38.000000000 +0200
|
||||
+++ firefox-99.0/build/pgo/profileserver.py 2022-04-04 10:15:45.387694143 +0200
|
||||
@@ -11,7 +11,7 @@
|
||||
import 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
|
||||
|
||||
93
icecat-python3.11-open-U.patch
Normal file
93
icecat-python3.11-open-U.patch
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
--- 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()
|
||||
27
icecat-python3.11-regex-inline-flags.patch
Normal file
27
icecat-python3.11-regex-inline-flags.patch
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
--- 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")
|
||||
23
icecat-wayland.desktop
Normal file
23
icecat-wayland.desktop
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=GNU IceCat on Wayland
|
||||
Comment=Browse the World Wide Web
|
||||
GenericName=Web Browser
|
||||
Keywords=Internet;WWW;Browser;Web;Explorer;
|
||||
Exec=icecat-wayland --name icecat-wayland %u
|
||||
Icon=icecat
|
||||
Terminal=false
|
||||
Type=Application
|
||||
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall;
|
||||
Categories=Network;WebBrowser;
|
||||
StartupNotify=true
|
||||
Name[en_US]=GNU IceCat on Wayland
|
||||
Actions=new-window;new-private-window;
|
||||
|
||||
[Desktop Action new-window]
|
||||
Name=Open a New Window
|
||||
Exec=icecat-wayland --name icecat-wayland --new-window %u
|
||||
|
||||
[Desktop Action new-private-window]
|
||||
Name=Open a New Private Window
|
||||
Exec=icecat-wayland --private-window --name icecat-wayland %u
|
||||
7
icecat-wayland.sh.in
Normal file
7
icecat-wayland.sh.in
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Run GNU IceCat under Wayland
|
||||
#
|
||||
|
||||
export MOZ_ENABLE_WAYLAND=1
|
||||
exec /__PREFIX__/bin/icecat "$@"
|
||||
338
icecat-x11.desktop
Normal file
338
icecat-x11.desktop
Normal file
|
|
@ -0,0 +1,338 @@
|
|||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=GNU IceCat on X11
|
||||
Comment=Browse the World Wide Web
|
||||
Comment[ar]=تصفح الشبكة العنكبوتية العالمية
|
||||
Comment[ast]=Restola pela Rede
|
||||
Comment[bn]=ইন্টারনেট ব্রাউজ করুন
|
||||
Comment[ca]=Navegueu per la web
|
||||
Comment[cs]=Prohlížení stránek World Wide Webu
|
||||
Comment[da]=Surf på internettet
|
||||
Comment[de]=Im Internet surfen
|
||||
Comment[el]=Μπορείτε να περιηγηθείτε στο διαδίκτυο (Web)
|
||||
Comment[es]=Navegue por la web
|
||||
Comment[et]=Lehitse veebi
|
||||
Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید
|
||||
Comment[fi]=Selaa Internetin WWW-sivuja
|
||||
Comment[fr]=Naviguer sur le Web
|
||||
Comment[gl]=Navegar pola rede
|
||||
Comment[he]=גלישה ברחבי האינטרנט
|
||||
Comment[hr]=Pretražite web
|
||||
Comment[hu]=A világháló böngészése
|
||||
Comment[it]=Esplora il web
|
||||
Comment[ja]=ウェブを閲覧します
|
||||
Comment[ko]=웹을 돌아 다닙니다
|
||||
Comment[ku]=Li torê bigere
|
||||
Comment[lt]=Naršykite internete
|
||||
Comment[nb]=Surf på nettet
|
||||
Comment[nl]=Verken het internet
|
||||
Comment[nn]=Surf på nettet
|
||||
Comment[no]=Surf på nettet
|
||||
Comment[pl]=Przeglądanie stron WWW
|
||||
Comment[pt]=Navegue na Internet
|
||||
Comment[pt_BR]=Navegue na Internet
|
||||
Comment[ro]=Navigați pe Internet
|
||||
Comment[ru]=Доступ в Интернет
|
||||
Comment[sk]=Prehliadanie internetu
|
||||
Comment[sl]=Brskajte po spletu
|
||||
Comment[sv]=Surfa på webben
|
||||
Comment[tr]=İnternet'te Gezinin
|
||||
Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ
|
||||
Comment[uk]=Перегляд сторінок Інтернету
|
||||
Comment[vi]=Để duyệt các trang web
|
||||
Comment[zh_CN]=浏览互联网
|
||||
Comment[zh_TW]=瀏覽網際網路
|
||||
GenericName=Web Browser
|
||||
GenericName[ar]=متصفح ويب
|
||||
GenericName[ast]=Restolador Web
|
||||
GenericName[bn]=ওয়েব ব্রাউজার
|
||||
GenericName[ca]=Navegador web
|
||||
GenericName[cs]=Webový prohlížeč
|
||||
GenericName[da]=Webbrowser
|
||||
GenericName[el]=Περιηγητής διαδικτύου
|
||||
GenericName[es]=Navegador web
|
||||
GenericName[et]=Veebibrauser
|
||||
GenericName[fa]=مرورگر اینترنتی
|
||||
GenericName[fi]=WWW-selain
|
||||
GenericName[fr]=Navigateur Web
|
||||
GenericName[gl]=Navegador Web
|
||||
GenericName[he]=דפדפן אינטרנט
|
||||
GenericName[hr]=Web preglednik
|
||||
GenericName[hu]=Webböngésző
|
||||
GenericName[it]=Browser web
|
||||
GenericName[ja]=ウェブ・ブラウザ
|
||||
GenericName[ko]=웹 브라우저
|
||||
GenericName[ku]=Geroka torê
|
||||
GenericName[lt]=Interneto naršyklė
|
||||
GenericName[nb]=Nettleser
|
||||
GenericName[nl]=Webbrowser
|
||||
GenericName[nn]=Nettlesar
|
||||
GenericName[no]=Nettleser
|
||||
GenericName[pl]=Przeglądarka WWW
|
||||
GenericName[pt]=Navegador Web
|
||||
GenericName[pt_BR]=Navegador Web
|
||||
GenericName[ro]=Navigator Internet
|
||||
GenericName[ru]=Веб-браузер
|
||||
GenericName[sk]=Internetový prehliadač
|
||||
GenericName[sl]=Spletni brskalnik
|
||||
GenericName[sv]=Webbläsare
|
||||
GenericName[tr]=Web Tarayıcı
|
||||
GenericName[ug]=توركۆرگۈ
|
||||
GenericName[uk]=Веб-браузер
|
||||
GenericName[vi]=Trình duyệt Web
|
||||
GenericName[zh_CN]=网络浏览器
|
||||
GenericName[zh_TW]=網路瀏覽器
|
||||
Keywords=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[ar]=انترنت;إنترنت;متصفح;ويب;وب;
|
||||
Keywords[ast]=Internet;WWW;Restolador;Web;Esplorador;
|
||||
Keywords[ca]=Internet;WWW;Navegador;Web;Explorador;Explorer;
|
||||
Keywords[cs]=Internet;WWW;Prohlížeč;Web;Explorer;
|
||||
Keywords[da]=Internet;Internettet;WWW;Browser;Browse;Web;Surf;Nettet;
|
||||
Keywords[de]=Internet;WWW;Browser;Web;Explorer;Webseite;Site;surfen;online;browsen;
|
||||
Keywords[el]=Internet;WWW;Browser;Web;Explorer;Διαδίκτυο;Περιηγητής;IceCat;Φιρεφοχ;Ιντερνετ;
|
||||
Keywords[es]=Explorador;Internet;WWW;
|
||||
Keywords[fi]=Internet;WWW;Browser;Web;Explorer;selain;Internet-selain;internetselain;verkkoselain;netti;surffaa;
|
||||
Keywords[fr]=Internet;WWW;Browser;Web;Explorer;Fureteur;Surfer;Navigateur;
|
||||
Keywords[he]=דפדפן;אינטרנט;רשת;אתרים;אתר;פיירפוקס;מוזילה;
|
||||
Keywords[hr]=Internet;WWW;preglednik;Web;
|
||||
Keywords[hu]=Internet;WWW;Böngésző;Web;Háló;Net;Explorer;
|
||||
Keywords[it]=Internet;WWW;Browser;Web;Navigatore;
|
||||
Keywords[is]=Internet;WWW;Vafri;Vefur;Netvafri;Flakk;
|
||||
Keywords[ja]=Internet;WWW;Web;インターネット;ブラウザ;ウェブ;エクスプローラ;
|
||||
Keywords[nb]=Internett;WWW;Nettleser;Explorer;Web;Browser;Nettside;
|
||||
Keywords[nl]=Internet;WWW;Browser;Web;Explorer;Verkenner;Website;Surfen;Online;
|
||||
Keywords[pt]=Internet;WWW;Browser;Web;Explorador;Navegador;
|
||||
Keywords[pt_BR]=Internet;WWW;Browser;Web;Explorador;Navegador;
|
||||
Keywords[ru]=Internet;WWW;Browser;Web;Explorer;интернет;браузер;веб;файрфокс;огнелис;
|
||||
Keywords[sk]=Internet;WWW;Prehliadač;Web;Explorer;
|
||||
Keywords[sl]=Internet;WWW;Browser;Web;Explorer;Brskalnik;Splet;
|
||||
Keywords[tr]=İnternet;WWW;Tarayıcı;Web;Gezgin;Web sitesi;Site;sörf;çevrimiçi;tara;
|
||||
Keywords[uk]=Internet;WWW;Browser;Web;Explorer;Інтернет;мережа;переглядач;оглядач;браузер;веб;файрфокс;вогнелис;перегляд;
|
||||
Keywords[vi]=Internet;WWW;Browser;Web;Explorer;Trình duyệt;Trang web;
|
||||
Keywords[zh_CN]=Internet;WWW;Browser;Web;Explorer;网页;浏览;上网;火狐;IceCat;ff;互联网;网站;
|
||||
Keywords[zh_TW]=Internet;WWW;Browser;Web;Explorer;網際網路;網路;瀏覽器;上網;網頁;火狐;
|
||||
Exec=icecat-x11 --name icecat-x11 %u
|
||||
Icon=icecat
|
||||
Terminal=false
|
||||
Type=Application
|
||||
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall;
|
||||
Categories=Network;WebBrowser;
|
||||
StartupNotify=true
|
||||
Name[en_US]=GNU IceCat on X11
|
||||
Actions=new-window;new-private-window;
|
||||
|
||||
[Desktop Action new-window]
|
||||
Name=Open a New Window
|
||||
Name[ach]=Dirica manyen
|
||||
Name[af]=Nuwe venster
|
||||
Name[an]=Nueva finestra
|
||||
Name[ar]=نافذة جديدة
|
||||
Name[as]=নতুন উইন্ডো
|
||||
Name[ast]=Ventana nueva
|
||||
Name[az]=Yeni Pəncərə
|
||||
Name[be]=Новае акно
|
||||
Name[bg]=Нов прозорец
|
||||
Name[bn-BD]=নতুন উইন্ডো (N)
|
||||
Name[bn-IN]=নতুন উইন্ডো
|
||||
Name[br]=Prenestr nevez
|
||||
Name[brx]=गोदान उइन्ड'(N)
|
||||
Name[bs]=Novi prozor
|
||||
Name[ca]=Finestra nova
|
||||
Name[cak]=K'ak'a' tzuwäch
|
||||
Name[cs]=Nové okno
|
||||
Name[cy]=Ffenestr Newydd
|
||||
Name[da]=Nyt vindue
|
||||
Name[de]=­Neues Fenster
|
||||
Name[dsb]=Nowe wokno
|
||||
Name[el]=Νέο παράθυρο
|
||||
Name[en-GB]=New Window
|
||||
Name[en-US]=New Window
|
||||
Name[en-ZA]=New Window
|
||||
Name[eo]=Nova fenestro
|
||||
Name[es-AR]=Nueva ventana
|
||||
Name[es-CL]=Nueva ventana
|
||||
Name[es-ES]=Nueva ventana
|
||||
Name[es-MX]=Nueva ventana
|
||||
Name[et]=Uus aken
|
||||
Name[eu]=Leiho berria
|
||||
Name[fa]=پنجره جدید
|
||||
Name[ff]=Henorde Hesere
|
||||
Name[fi]=Uusi ikkuna
|
||||
Name[fr]=­Nouvelle fenêtre
|
||||
Name[fy-NL]=Nij finster
|
||||
Name[ga-IE]=Fuinneog Nua
|
||||
Name[gd]=Uinneag ùr
|
||||
Name[gl]=Nova xanela
|
||||
Name[gn]=Ovetã pyahu
|
||||
Name[gu-IN]=નવી વિન્ડો
|
||||
Name[he]=חלון חדש
|
||||
Name[hi-IN]=नया विंडो
|
||||
Name[hr]=Novi prozor
|
||||
Name[hsb]=Nowe wokno
|
||||
Name[hu]=Új ablak
|
||||
Name[hy-AM]=Նոր Պատուհան
|
||||
Name[id]=Jendela Baru
|
||||
Name[is]=Nýr gluggi
|
||||
Name[it]=Nuova finestra­
|
||||
Name[ja]=新しいウィンドウ
|
||||
Name[ja-JP-mac]=新規ウインドウ
|
||||
Name[ka]=ახალი ფანჯარა
|
||||
Name[kk]=Жаңа терезе
|
||||
Name[km]=បង្អួចថ្មី
|
||||
Name[kn]=ಹೊಸ ಕಿಟಕಿ
|
||||
Name[ko]=새 창
|
||||
Name[kok]=नवें जनेल
|
||||
Name[ks]=نئئ وِنڈو
|
||||
Name[lij]=Neuvo barcon
|
||||
Name[lo]=ຫນ້າຕ່າງໃຫມ່
|
||||
Name[lt]=Naujas langas
|
||||
Name[ltg]=Jauns lūgs
|
||||
Name[lv]=Jauns logs
|
||||
Name[mai]=नव विंडो
|
||||
Name[mk]=Нов прозорец
|
||||
Name[ml]=പുതിയ ജാലകം
|
||||
Name[mr]=नवीन पटल
|
||||
Name[ms]=Tetingkap Baru
|
||||
Name[my]=ဝင်းဒိုးအသစ်
|
||||
Name[nb-NO]=Nytt vindu
|
||||
Name[ne-NP]=नयाँ सञ्झ्याल
|
||||
Name[nl]=Nieuw venster
|
||||
Name[nn-NO]=Nytt vindauge
|
||||
Name[or]=ନୂତନ ୱିଣ୍ଡୋ
|
||||
Name[pa-IN]=ਨਵੀਂ ਵਿੰਡੋ
|
||||
Name[pl]=Nowe okno
|
||||
Name[pt-BR]=Nova janela
|
||||
Name[pt-PT]=Nova janela
|
||||
Name[rm]=Nova fanestra
|
||||
Name[ro]=Fereastră nouă
|
||||
Name[ru]=Новое окно
|
||||
Name[sat]=नावा विंडो (N)
|
||||
Name[si]=නව කවුළුවක්
|
||||
Name[sk]=Nové okno
|
||||
Name[sl]=Novo okno
|
||||
Name[son]=Zanfun taaga
|
||||
Name[sq]=Dritare e Re
|
||||
Name[sr]=Нови прозор
|
||||
Name[sv-SE]=Nytt fönster
|
||||
Name[ta]=புதிய சாளரம்
|
||||
Name[te]=కొత్త విండో
|
||||
Name[th]=หน้าต่างใหม่
|
||||
Name[tr]=Yeni pencere
|
||||
Name[tsz]=Eraatarakua jimpani
|
||||
Name[uk]=Нове вікно
|
||||
Name[ur]=نیا دریچہ
|
||||
Name[uz]=Yangi oyna
|
||||
Name[vi]=Cửa sổ mới
|
||||
Name[wo]=Palanteer bu bees
|
||||
Name[xh]=Ifestile entsha
|
||||
Name[zh-CN]=新建窗口
|
||||
Name[zh-TW]=開新視窗
|
||||
Exec=icecat-x11 --name icecat-x11 --new-window %u
|
||||
|
||||
[Desktop Action new-private-window]
|
||||
Name=Open a New Private Window
|
||||
Name[ach]=Dirica manyen me mung
|
||||
Name[af]=Nuwe privaatvenster
|
||||
Name[an]=Nueva finestra privada
|
||||
Name[ar]=نافذة خاصة جديدة
|
||||
Name[as]=নতুন ব্যক্তিগত উইন্ডো
|
||||
Name[ast]=Ventana privada nueva
|
||||
Name[az]=Yeni Məxfi Pəncərə
|
||||
Name[be]=Новае акно адасаблення
|
||||
Name[bg]=Нов прозорец за поверително сърфиране
|
||||
Name[bn-BD]=নতুন ব্যক্তিগত উইন্ডো
|
||||
Name[bn-IN]=নতুন ব্যক্তিগত উইন্ডো
|
||||
Name[br]=Prenestr merdeiñ prevez nevez
|
||||
Name[brx]=गोदान प्राइभेट उइन्ड'
|
||||
Name[bs]=Novi privatni prozor
|
||||
Name[ca]=Finestra privada nova
|
||||
Name[cak]=K'ak'a' ichinan tzuwäch
|
||||
Name[cs]=Nové anonymní okno
|
||||
Name[cy]=Ffenestr Breifat Newydd
|
||||
Name[da]=Nyt privat vindue
|
||||
Name[de]=Neues privates Fenster
|
||||
Name[dsb]=Nowe priwatne wokno
|
||||
Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης
|
||||
Name[en-GB]=New Private Window
|
||||
Name[en-US]=New Private Window
|
||||
Name[en-ZA]=New Private Window
|
||||
Name[eo]=Nova privata fenestro
|
||||
Name[es-AR]=Nueva ventana privada
|
||||
Name[es-CL]=Nueva ventana privada
|
||||
Name[es-ES]=Nueva ventana privada
|
||||
Name[es-MX]=Nueva ventana privada
|
||||
Name[et]=Uus privaatne aken
|
||||
Name[eu]=Leiho pribatu berria
|
||||
Name[fa]=پنجره ناشناس جدید
|
||||
Name[ff]=Henorde Suturo Hesere
|
||||
Name[fi]=Uusi yksityinen ikkuna
|
||||
Name[fr]=Nouvelle fenêtre de navigation privée
|
||||
Name[fy-NL]=Nij priveefinster
|
||||
Name[ga-IE]=Fuinneog Nua Phríobháideach
|
||||
Name[gd]=Uinneag phrìobhaideach ùr
|
||||
Name[gl]=Nova xanela privada
|
||||
Name[gn]=Ovetã ñemi pyahu
|
||||
Name[gu-IN]=નવી ખાનગી વિન્ડો
|
||||
Name[he]=חלון פרטי חדש
|
||||
Name[hi-IN]=नयी निजी विंडो
|
||||
Name[hr]=Novi privatni prozor
|
||||
Name[hsb]=Nowe priwatne wokno
|
||||
Name[hu]=Új privát ablak
|
||||
Name[hy-AM]=Սկսել Գաղտնի դիտարկում
|
||||
Name[id]=Jendela Mode Pribadi Baru
|
||||
Name[is]=Nýr huliðsgluggi
|
||||
Name[it]=Nuova finestra anonima
|
||||
Name[ja]=新しいプライベートウィンドウ
|
||||
Name[ja-JP-mac]=新規プライベートウインドウ
|
||||
Name[ka]=ახალი პირადი ფანჯარა
|
||||
Name[kk]=Жаңа жекелік терезе
|
||||
Name[km]=បង្អួចឯកជនថ្មី
|
||||
Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ
|
||||
Name[ko]=새 사생활 보호 모드
|
||||
Name[kok]=नवो खाजगी विंडो
|
||||
Name[ks]=نْو پرایوٹ وینڈو&
|
||||
Name[lij]=Neuvo barcon privou
|
||||
Name[lo]=ເປີດຫນ້າຕ່າງສວນຕົວຂື້ນມາໃຫມ່
|
||||
Name[lt]=Naujas privataus naršymo langas
|
||||
Name[ltg]=Jauns privatais lūgs
|
||||
Name[lv]=Jauns privātais logs
|
||||
Name[mai]=नया निज विंडो (W)
|
||||
Name[mk]=Нов приватен прозорец
|
||||
Name[ml]=പുതിയ സ്വകാര്യ ജാലകം
|
||||
Name[mr]=नवीन वैयक्तिक पटल
|
||||
Name[ms]=Tetingkap Persendirian Baharu
|
||||
Name[my]=New Private Window
|
||||
Name[nb-NO]=Nytt privat vindu
|
||||
Name[ne-NP]=नयाँ निजी सञ्झ्याल
|
||||
Name[nl]=Nieuw privévenster
|
||||
Name[nn-NO]=Nytt privat vindauge
|
||||
Name[or]=ନୂତନ ବ୍ୟକ୍ତିଗତ ୱିଣ୍ଡୋ
|
||||
Name[pa-IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ
|
||||
Name[pl]=Nowe okno prywatne
|
||||
Name[pt-BR]=Nova janela privativa
|
||||
Name[pt-PT]=Nova janela privada
|
||||
Name[rm]=Nova fanestra privata
|
||||
Name[ro]=Fereastră privată nouă
|
||||
Name[ru]=Новое приватное окно
|
||||
Name[sat]=नावा निजेराक् विंडो (W )
|
||||
Name[si]=නව පුද්ගලික කවුළුව (W)
|
||||
Name[sk]=Nové okno v režime Súkromné prehliadanie
|
||||
Name[sl]=Novo zasebno okno
|
||||
Name[son]=Sutura zanfun taaga
|
||||
Name[sq]=Dritare e Re Private
|
||||
Name[sr]=Нови приватан прозор
|
||||
Name[sv-SE]=Nytt privat fönster
|
||||
Name[ta]=புதிய தனிப்பட்ட சாளரம்
|
||||
Name[te]=కొత్త ఆంతరంగిక విండో
|
||||
Name[th]=หน้าต่างส่วนตัวใหม่
|
||||
Name[tr]=Yeni gizli pencere
|
||||
Name[tsz]=Juchiiti eraatarakua jimpani
|
||||
Name[uk]=Приватне вікно
|
||||
Name[ur]=نیا نجی دریچہ
|
||||
Name[uz]=Yangi maxfiy oyna
|
||||
Name[vi]=Cửa sổ riêng tư mới
|
||||
Name[wo]=Panlanteeru biir bu bees
|
||||
Name[xh]=Ifestile yangasese entsha
|
||||
Name[zh-CN]=新建隐私浏览窗口
|
||||
Name[zh-TW]=新增隱私視窗
|
||||
Exec=icecat-x11 --name icecat-x11 --private-window %u
|
||||
7
icecat-x11.sh.in
Normal file
7
icecat-x11.sh.in
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Run GNU IceCat on X11 backend
|
||||
#
|
||||
|
||||
export MOZ_DISABLE_WAYLAND=1
|
||||
exec /__PREFIX__/bin/icecat "$@"
|
||||
16
icecat.sh.in
16
icecat.sh.in
|
|
@ -64,7 +64,7 @@ MOZ_DIST_BIN="$MOZ_LIB_DIR/icecat"
|
|||
MOZ_LANGPACKS_DIR="$MOZ_DIST_BIN/langpacks"
|
||||
MOZ_EXTENSIONS_PROFILE_DIR="$HOME/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
|
||||
MOZ_PROGRAM="$MOZ_DIST_BIN/$MOZ_FIREFOX_FILE"
|
||||
MOZ_LAUNCHER="$MOZ_DIST_BIN/icecat"
|
||||
MOZ_LAUNCHER="$MOZ_DIST_BIN/run-icecat.sh"
|
||||
GETENFORCE_FILE="/usr/sbin/getenforce"
|
||||
|
||||
##
|
||||
|
|
@ -269,11 +269,13 @@ do
|
|||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
## Allow downgrade because during distro upgrade the build time can be
|
||||
## older in newer version than the previous one.
|
||||
##
|
||||
export MOZ_ALLOW_DOWNGRADE=1
|
||||
|
||||
# Run the browser
|
||||
debugging=0
|
||||
if [ $debugging = 1 ]
|
||||
then
|
||||
echo $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@"
|
||||
fi
|
||||
|
||||
|
||||
exec $MOZ_PROGRAM "$@"
|
||||
exec $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@"
|
||||
|
|
|
|||
395
icecat.spec
395
icecat.spec
|
|
@ -2,14 +2,21 @@
|
|||
# Set to true if it's going to be submitted as update
|
||||
%global release_build 1
|
||||
|
||||
# Set new source-code build version for Fedora and, not necessarily, for upstream too
|
||||
# Set new source-code build version
|
||||
# This tag indicates a new rebuild for Fedora
|
||||
%global redhat_ver rh1
|
||||
|
||||
ExcludeArch: %{ix86} %{arm}
|
||||
# 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}
|
||||
|
||||
# Bundled cbindgen makes build slow.
|
||||
# Enable only if system cbindgen is not available.
|
||||
%global use_bundled_cbindgen 0
|
||||
# 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
|
||||
|
||||
####################
|
||||
|
||||
|
|
@ -20,40 +27,45 @@ ExcludeArch: %{ix86} %{arm}
|
|||
# Downgrade optimization
|
||||
%global less_optbuild 0
|
||||
|
||||
# Build PGO+LTO on x86_64 and aarch64 only
|
||||
%ifarch x86_64 %{arm64}
|
||||
# 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
|
||||
%if 0%{?release_build}
|
||||
%global build_with_pgo 1
|
||||
%global pgo_wayland 1
|
||||
%global launch_wayland_compositor 1
|
||||
%else
|
||||
%global build_with_pgo 0
|
||||
%global pgo_wayland 0
|
||||
%global launch_wayland_compositor 0
|
||||
%else
|
||||
%global build_with_pgo 0
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%global launch_wayland_compositor 0
|
||||
%if 0%{?build_with_pgo}
|
||||
%global launch_wayland_compositor 1
|
||||
%endif
|
||||
|
||||
# Disable LTO to work around rhbz#1883904
|
||||
%define _lto_cflags %{nil}
|
||||
####################
|
||||
|
||||
# Active/Deactive language files handling
|
||||
%bcond_without langpacks
|
||||
|
||||
%if %{with langpacks}
|
||||
%bcond_without langpacks_subpkg
|
||||
%endif
|
||||
%global build_langpacks 1
|
||||
|
||||
# Define installation directories
|
||||
%global icecatappdir %{_libdir}/%{name}
|
||||
# Define language files directory
|
||||
%global langpackdir %{icecatappdir}/langpacks
|
||||
|
||||
%global icecat_ver %{name}-%{version}
|
||||
%global icecat_devel %{name}-devel-%{version}
|
||||
|
||||
# Define language files directory
|
||||
%global langpackdir %{icecatappdir}/langpacks
|
||||
|
||||
%global toolkit_gtk3 1
|
||||
|
||||
# Big endian platforms
|
||||
%ifarch s390x %{power64}
|
||||
%ifarch ppc64 s390x
|
||||
# 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
|
||||
|
|
@ -67,7 +79,7 @@ ExcludeArch: %{ix86} %{arm}
|
|||
%if %{?system_nss}
|
||||
%global nspr_version 4.32
|
||||
%global nspr_build_version %{nspr_version}
|
||||
%global nss_version 3.100
|
||||
%global nss_version 3.88
|
||||
%global nss_build_version %{nss_version}
|
||||
%endif
|
||||
|
||||
|
|
@ -80,12 +92,13 @@ ExcludeArch: %{ix86} %{arm}
|
|||
%global libvpx_version 1.8.2
|
||||
%endif
|
||||
|
||||
# Use clang?
|
||||
%bcond_without toolchain_clang
|
||||
%global disable_elfhack 1
|
||||
|
||||
%if %{with toolchain_clang}
|
||||
%global toolchain clang
|
||||
%endif
|
||||
# cbingen
|
||||
%global use_bundled_cbindgen 1
|
||||
|
||||
# Use clang?
|
||||
%global build_with_clang 0
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1908792
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=2255254
|
||||
|
|
@ -93,17 +106,17 @@ ExcludeArch: %{ix86} %{arm}
|
|||
%global __requires_exclude ^(%%(find %{buildroot}%{icecatappdir} -name '*.so' | xargs -n1 basename | sort -u | paste -s -d '|' -))
|
||||
|
||||
Name: icecat
|
||||
Epoch: 4
|
||||
Version: 140.7.0
|
||||
Epoch: 2
|
||||
Version: 115.8.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-4-Clause-UC 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 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.
|
||||
## All modified files are hosted in a dedicated fork repository:
|
||||
## Modified files are hosted in a dedicated fork repository:
|
||||
## https://gitlab.com/anto.trande/icecat
|
||||
Source0: %{name}-%{version}-%{redhat_ver}.tar.bz2
|
||||
|
||||
|
|
@ -111,7 +124,7 @@ Source2: %{name}.png
|
|||
Source3: %{name}-mozconfig-common
|
||||
|
||||
# Language files downloaded by source7 script
|
||||
%if %{with langpacks}
|
||||
%if 0%{?build_langpacks}
|
||||
Source4: %{name}-%{version}-langpacks.tar.gz
|
||||
%endif
|
||||
|
||||
|
|
@ -124,27 +137,64 @@ 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
|
||||
Patch5: rhbz-1219542-s390-build.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
|
||||
|
||||
# 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
|
||||
Patch603: %{name}-gcc-always-inline.patch
|
||||
Patch600: %{name}-pgo.patch
|
||||
Patch602: mozilla-1516803.patch
|
||||
|
||||
BuildRequires: alsa-lib-devel
|
||||
BuildRequires: autoconf213
|
||||
|
|
@ -204,12 +254,10 @@ BuildRequires: nss-static >= %{nss_version}
|
|||
%endif
|
||||
|
||||
BuildRequires: pango-devel
|
||||
BuildRequires: pciutils-libs
|
||||
BuildRequires: pipewire-devel
|
||||
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)
|
||||
|
|
@ -218,36 +266,25 @@ BuildRequires: pkgconfig(libcurl)
|
|||
%if %{with pulseaudio}
|
||||
BuildRequires: pulseaudio-libs-devel
|
||||
%endif
|
||||
BuildRequires: yasm
|
||||
BuildRequires: llvm
|
||||
%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
|
||||
BuildRequires: llvm-devel
|
||||
BuildRequires: clang
|
||||
BuildRequires: clang-libs
|
||||
BuildRequires: clang-devel
|
||||
%if 0%{?build_with_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
|
||||
BuildRequires: dbus-x11
|
||||
BuildRequires: gnome-keyring
|
||||
%endif
|
||||
%if 0%{?build_with_pgo}
|
||||
BuildRequires: xorg-x11-server-Xvfb
|
||||
%endif
|
||||
|
||||
%if 0%{?big_endian}
|
||||
|
|
@ -296,16 +333,20 @@ Extensions included to this version of IceCat:
|
|||
requested. This implies not downloading feeds, updates, blacklists or any
|
||||
other similar data needed during startup.
|
||||
|
||||
%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
|
||||
%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.
|
||||
|
||||
%prep
|
||||
%autosetup -N -n %{name}-%{version}
|
||||
|
|
@ -313,21 +354,47 @@ and translations langpack add-ons.
|
|||
# Copy license files
|
||||
tar -xf %{SOURCE5}
|
||||
|
||||
%patch -P 1 -p 1 -b .fix_addon_installation
|
||||
%patch -P 2 -p 1 -b .commasplit
|
||||
%ifarch s390
|
||||
%patch -P 5 -p 1 -b .rhbz-1219542-s390
|
||||
%endif
|
||||
|
||||
%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
|
||||
|
||||
# ARM64
|
||||
%ifarch %{arm64}
|
||||
# ARM run-time patch
|
||||
%ifarch aarch64
|
||||
%patch -P 40 -p 1 -b .aarch64-skia
|
||||
%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 -P 603 -p1 -b .inline
|
||||
|
||||
%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
|
||||
|
||||
# Remove default configuration and copy the customized one
|
||||
rm -f .mozconfig
|
||||
|
|
@ -344,7 +411,7 @@ echo "ac_add_options --disable-webrtc" >> .mozconfig
|
|||
|
||||
# Hide DRM Content option
|
||||
# This option does not work on other architectures
|
||||
%ifarch x86_64
|
||||
%ifarch x86_64 %{ix86}
|
||||
echo "ac_add_options --disable-eme" >> .mozconfig
|
||||
%endif
|
||||
|
||||
|
|
@ -380,7 +447,16 @@ 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
|
||||
|
|
@ -388,6 +464,10 @@ 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
|
||||
|
|
@ -401,15 +481,14 @@ echo "ac_add_options --disable-tests" >> .mozconfig
|
|||
echo "ac_add_options --disable-crashreporter" >> .mozconfig
|
||||
|
||||
# Localization
|
||||
%if %{with langpacks}
|
||||
%if 0%{?build_langpacks}
|
||||
echo "ac_add_options --with-l10n-base=$PWD/l10n" >> .mozconfig
|
||||
%endif
|
||||
|
||||
%if "%toolchain" == "clang"
|
||||
echo "ac_add_options --with-libclang-path=`llvm-config%{?llvm_suffix} --libdir`" >> .mozconfig
|
||||
%endif
|
||||
# Clang
|
||||
echo "ac_add_options --with-libclang-path=%{_libdir}" >> .mozconfig
|
||||
|
||||
%ifarch s390x %{arm64}
|
||||
%ifarch s390x
|
||||
echo "ac_add_options --disable-jit" >> .mozconfig
|
||||
%endif
|
||||
|
||||
|
|
@ -436,6 +515,7 @@ 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}
|
||||
|
|
@ -449,15 +529,8 @@ 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 || :
|
||||
|
|
@ -482,6 +555,11 @@ 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
|
||||
|
|
@ -490,80 +568,114 @@ MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g1/')
|
|||
export MOZ_DEBUG_FLAGS=" "
|
||||
%endif
|
||||
|
||||
# We don't want firefox to use CK_GCM_PARAMS_V3 in nss
|
||||
%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
|
||||
MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -DNSS_PKCS11_3_0_STRICT"
|
||||
|
||||
%if "%toolchain" != "clang"
|
||||
%ifarch s390x %{power64} %{arm64}
|
||||
MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads"
|
||||
%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
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%ifarch s390x
|
||||
%ifarch %{arm} %{ix86} s390x
|
||||
export RUSTFLAGS="-Cdebuginfo=0"
|
||||
%endif
|
||||
|
||||
# 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"
|
||||
%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
|
||||
|
||||
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="`which pkg-config`"
|
||||
export PKG_CONFIG='%{_bindir}/pkg-config'
|
||||
export PYTHON='%{__python3}'
|
||||
|
||||
%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
|
||||
%if 0%{?build_with_clang}
|
||||
export LLVM_PROFDATA="llvm-profdata"
|
||||
export AR="llvm-ar"
|
||||
export NM="llvm-nm"
|
||||
export RANLIB="llvm-ranlib"
|
||||
echo "ac_add_options --enable-linker=lld" >> .mozconfig
|
||||
echo "export CC=clang%{?llvm_suffix}" >> .mozconfig
|
||||
echo "export CXX=clang++%{?llvm_suffix}" >> .mozconfig
|
||||
%else
|
||||
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
|
||||
export CC=gcc
|
||||
export CXX=g++
|
||||
export AR="gcc-ar"
|
||||
export NM="gcc-nm"
|
||||
export RANLIB="gcc-ranlib"
|
||||
%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}
|
||||
echo "mk_add_options MOZ_MAKE_FLAGS=\"-j1\"" >> .mozconfig
|
||||
MOZ_SMP_FLAGS=-j1
|
||||
%else
|
||||
echo "mk_add_options MOZ_MAKE_FLAGS=\"-j%{_smp_build_ncpus}\"" >> .mozconfig
|
||||
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
|
||||
%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
|
||||
|
||||
./mach build -v 2>&1 | cat - || exit 1
|
||||
|
||||
%if 0%{?build_with_pgo}
|
||||
kill $MUTTER_PID
|
||||
%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
|
||||
%endif
|
||||
|
||||
%install
|
||||
|
|
@ -588,11 +700,24 @@ 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
|
||||
|
|
@ -653,6 +778,9 @@ 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}
|
||||
|
|
@ -688,11 +816,10 @@ end
|
|||
appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.appdata.xml
|
||||
desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop
|
||||
|
||||
%if %{with langpacks_subpkg}
|
||||
%files
|
||||
%dir %{langpackdir}
|
||||
%else
|
||||
%if 0%{?build_langpacks}
|
||||
%files -f %{name}.lang
|
||||
%else
|
||||
%files
|
||||
%endif
|
||||
%doc README.* AUTHORS
|
||||
%license LICENSE COPYING-*
|
||||
|
|
@ -711,12 +838,22 @@ 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/
|
||||
%ifarch %{arm64} riscv64
|
||||
%{icecatappdir}/v4l2test
|
||||
%if 0%{?build_langpacks}
|
||||
%dir %{langpackdir}
|
||||
%endif
|
||||
|
||||
%files x11
|
||||
%{_bindir}/%{name}-x11
|
||||
%{_datadir}/applications/%{name}-x11.desktop
|
||||
|
||||
%files wayland
|
||||
%{_bindir}/%{name}-wayland
|
||||
%{_datadir}/applications/%{name}-wayland.desktop
|
||||
|
||||
%changelog
|
||||
%autochangelog
|
||||
|
|
|
|||
14
mozilla-1196777.patch
Normal file
14
mozilla-1196777.patch
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
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,
|
||||
|
||||
496
mozilla-1337988.patch
Normal file
496
mozilla-1337988.patch
Normal file
|
|
@ -0,0 +1,496 @@
|
|||
diff -up firefox-56.0/dom/plugins/base/nsJSNPRuntime.cpp.1337988 firefox-56.0/dom/plugins/base/nsJSNPRuntime.cpp
|
||||
--- firefox-56.0/dom/plugins/base/nsJSNPRuntime.cpp.1337988 2017-09-14 22:15:56.000000000 +0200
|
||||
+++ firefox-56.0/dom/plugins/base/nsJSNPRuntime.cpp 2017-09-25 10:34:11.205611698 +0200
|
||||
@@ -1719,7 +1719,7 @@ NPObjWrapper_ObjectMoved(JSObject *obj,
|
||||
auto entry =
|
||||
static_cast<NPObjWrapperHashEntry*>(sNPObjWrappers->Search(npobj));
|
||||
MOZ_ASSERT(entry && entry->mJSObj);
|
||||
- MOZ_ASSERT(entry->mJSObj == old);
|
||||
+ MOZ_ASSERT(entry->mJSObj.unbarrieredGetPtr() == old);
|
||||
entry->mJSObj = obj;
|
||||
}
|
||||
|
||||
diff -up firefox-56.0/js/ipc/JavaScriptShared.cpp.1337988 firefox-56.0/js/ipc/JavaScriptShared.cpp
|
||||
--- firefox-56.0/js/ipc/JavaScriptShared.cpp.1337988 2017-07-31 18:20:47.000000000 +0200
|
||||
+++ firefox-56.0/js/ipc/JavaScriptShared.cpp 2017-09-25 10:34:11.205611698 +0200
|
||||
@@ -101,7 +101,7 @@ IdToObjectMap::has(const ObjectId& id, c
|
||||
auto p = table_.lookup(id);
|
||||
if (!p)
|
||||
return false;
|
||||
- return p->value() == obj;
|
||||
+ return p->value().unbarrieredGet() == obj;
|
||||
}
|
||||
#endif
|
||||
|
||||
diff -up firefox-56.0/js/public/RootingAPI.h.1337988 firefox-56.0/js/public/RootingAPI.h
|
||||
--- firefox-56.0/js/public/RootingAPI.h.1337988 2017-07-31 18:20:47.000000000 +0200
|
||||
+++ firefox-56.0/js/public/RootingAPI.h 2017-09-25 10:34:11.206611695 +0200
|
||||
@@ -148,6 +148,10 @@ template<typename T>
|
||||
struct PersistentRootedMarker;
|
||||
} /* namespace gc */
|
||||
|
||||
+#define DECLARE_POINTER_COMPARISON_OPS(T) \
|
||||
+ bool operator==(const T& other) const { return get() == other; } \
|
||||
+ bool operator!=(const T& other) const { return get() != other; }
|
||||
+
|
||||
// Important: Return a reference so passing a Rooted<T>, etc. to
|
||||
// something that takes a |const T&| is not a GC hazard.
|
||||
#define DECLARE_POINTER_CONSTREF_OPS(T) \
|
||||
@@ -237,8 +241,6 @@ class Heap : public js::HeapBase<T, Heap
|
||||
static_assert(js::IsHeapConstructibleType<T>::value,
|
||||
"Type T must be a public GC pointer type");
|
||||
public:
|
||||
- using ElementType = T;
|
||||
-
|
||||
Heap() {
|
||||
static_assert(sizeof(T) == sizeof(Heap<T>),
|
||||
"Heap<T> must be binary compatible with T.");
|
||||
@@ -385,8 +387,6 @@ template <typename T>
|
||||
class TenuredHeap : public js::HeapBase<T, TenuredHeap<T>>
|
||||
{
|
||||
public:
|
||||
- using ElementType = T;
|
||||
-
|
||||
TenuredHeap() : bits(0) {
|
||||
static_assert(sizeof(T) == sizeof(TenuredHeap<T>),
|
||||
"TenuredHeap<T> must be binary compatible with T.");
|
||||
@@ -394,6 +394,9 @@ class TenuredHeap : public js::HeapBase<
|
||||
explicit TenuredHeap(T p) : bits(0) { setPtr(p); }
|
||||
explicit TenuredHeap(const TenuredHeap<T>& p) : bits(0) { setPtr(p.getPtr()); }
|
||||
|
||||
+ bool operator==(const TenuredHeap<T>& other) { return bits == other.bits; }
|
||||
+ bool operator!=(const TenuredHeap<T>& other) { return bits != other.bits; }
|
||||
+
|
||||
void setPtr(T newPtr) {
|
||||
MOZ_ASSERT((reinterpret_cast<uintptr_t>(newPtr) & flagsMask) == 0);
|
||||
if (newPtr)
|
||||
@@ -470,8 +473,6 @@ class MOZ_NONHEAP_CLASS Handle : public
|
||||
friend class JS::MutableHandle<T>;
|
||||
|
||||
public:
|
||||
- using ElementType = T;
|
||||
-
|
||||
/* Creates a handle from a handle of a type convertible to T. */
|
||||
template <typename S>
|
||||
MOZ_IMPLICIT Handle(Handle<S> handle,
|
||||
@@ -533,6 +534,7 @@ class MOZ_NONHEAP_CLASS Handle : public
|
||||
MOZ_IMPLICIT Handle(MutableHandle<S>& root,
|
||||
typename mozilla::EnableIf<mozilla::IsConvertible<S, T>::value, int>::Type dummy = 0);
|
||||
|
||||
+ DECLARE_POINTER_COMPARISON_OPS(T);
|
||||
DECLARE_POINTER_CONSTREF_OPS(T);
|
||||
DECLARE_NONPOINTER_ACCESSOR_METHODS(*ptr);
|
||||
|
||||
@@ -559,8 +561,6 @@ template <typename T>
|
||||
class MOZ_STACK_CLASS MutableHandle : public js::MutableHandleBase<T, MutableHandle<T>>
|
||||
{
|
||||
public:
|
||||
- using ElementType = T;
|
||||
-
|
||||
inline MOZ_IMPLICIT MutableHandle(Rooted<T>* root);
|
||||
inline MOZ_IMPLICIT MutableHandle(PersistentRooted<T>* root);
|
||||
|
||||
@@ -589,6 +589,7 @@ class MOZ_STACK_CLASS MutableHandle : pu
|
||||
return h;
|
||||
}
|
||||
|
||||
+ DECLARE_POINTER_COMPARISON_OPS(T);
|
||||
DECLARE_POINTER_CONSTREF_OPS(T);
|
||||
DECLARE_NONPOINTER_ACCESSOR_METHODS(*ptr);
|
||||
DECLARE_NONPOINTER_MUTABLE_ACCESSOR_METHODS(*ptr);
|
||||
@@ -805,8 +806,6 @@ class MOZ_RAII Rooted : public js::Roote
|
||||
}
|
||||
|
||||
public:
|
||||
- using ElementType = T;
|
||||
-
|
||||
template <typename RootingContext>
|
||||
explicit Rooted(const RootingContext& cx)
|
||||
: ptr(GCPolicy<T>::initial())
|
||||
@@ -839,6 +838,7 @@ class MOZ_RAII Rooted : public js::Roote
|
||||
ptr = mozilla::Move(value);
|
||||
}
|
||||
|
||||
+ DECLARE_POINTER_COMPARISON_OPS(T);
|
||||
DECLARE_POINTER_CONSTREF_OPS(T);
|
||||
DECLARE_POINTER_ASSIGN_OPS(Rooted, T);
|
||||
DECLARE_NONPOINTER_ACCESSOR_METHODS(ptr);
|
||||
@@ -903,14 +903,13 @@ template <typename T>
|
||||
class MOZ_RAII FakeRooted : public RootedBase<T, FakeRooted<T>>
|
||||
{
|
||||
public:
|
||||
- using ElementType = T;
|
||||
-
|
||||
template <typename CX>
|
||||
explicit FakeRooted(CX* cx) : ptr(JS::GCPolicy<T>::initial()) {}
|
||||
|
||||
template <typename CX>
|
||||
FakeRooted(CX* cx, T initial) : ptr(initial) {}
|
||||
|
||||
+ DECLARE_POINTER_COMPARISON_OPS(T);
|
||||
DECLARE_POINTER_CONSTREF_OPS(T);
|
||||
DECLARE_POINTER_ASSIGN_OPS(FakeRooted, T);
|
||||
DECLARE_NONPOINTER_ACCESSOR_METHODS(ptr);
|
||||
@@ -931,8 +930,6 @@ template <typename T>
|
||||
class FakeMutableHandle : public js::MutableHandleBase<T, FakeMutableHandle<T>>
|
||||
{
|
||||
public:
|
||||
- using ElementType = T;
|
||||
-
|
||||
MOZ_IMPLICIT FakeMutableHandle(T* t) {
|
||||
ptr = t;
|
||||
}
|
||||
@@ -1124,8 +1121,6 @@ class PersistentRooted : public js::Root
|
||||
}
|
||||
|
||||
public:
|
||||
- using ElementType = T;
|
||||
-
|
||||
PersistentRooted() : ptr(GCPolicy<T>::initial()) {}
|
||||
|
||||
explicit PersistentRooted(RootingContext* cx)
|
||||
@@ -1203,6 +1198,7 @@ class PersistentRooted : public js::Root
|
||||
}
|
||||
}
|
||||
|
||||
+ DECLARE_POINTER_COMPARISON_OPS(T);
|
||||
DECLARE_POINTER_CONSTREF_OPS(T);
|
||||
DECLARE_POINTER_ASSIGN_OPS(PersistentRooted, T);
|
||||
DECLARE_NONPOINTER_ACCESSOR_METHODS(ptr);
|
||||
@@ -1234,8 +1230,6 @@ class JS_PUBLIC_API(ObjectPtr)
|
||||
Heap<JSObject*> value;
|
||||
|
||||
public:
|
||||
- using ElementType = JSObject*;
|
||||
-
|
||||
ObjectPtr() : value(nullptr) {}
|
||||
|
||||
explicit ObjectPtr(JSObject* obj) : value(obj) {}
|
||||
@@ -1342,177 +1336,6 @@ Swap(JS::TenuredHeap<T>& aX, JS::Tenured
|
||||
|
||||
} /* namespace mozilla */
|
||||
|
||||
-namespace js {
|
||||
-namespace detail {
|
||||
-
|
||||
-// DefineComparisonOps is a trait which selects which wrapper classes to define
|
||||
-// operator== and operator!= for. It supplies a getter function to extract the
|
||||
-// value to compare. This is used to avoid triggering the automatic read
|
||||
-// barriers where appropriate.
|
||||
-//
|
||||
-// If DefineComparisonOps is not specialized for a particular wrapper you may
|
||||
-// get errors such as 'invalid operands to binary expression' or 'no match for
|
||||
-// operator==' when trying to compare against instances of the wrapper.
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps : mozilla::FalseType {};
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps<JS::Heap<T>> : mozilla::TrueType {
|
||||
- static const T& get(const JS::Heap<T>& v) { return v.unbarrieredGet(); }
|
||||
-};
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps<JS::TenuredHeap<T>> : mozilla::TrueType {
|
||||
- static const T get(const JS::TenuredHeap<T>& v) { return v.unbarrieredGetPtr(); }
|
||||
-};
|
||||
-
|
||||
-template <>
|
||||
-struct DefineComparisonOps<JS::ObjectPtr> : mozilla::TrueType {
|
||||
- static const JSObject* get(const JS::ObjectPtr& v) { return v.unbarrieredGet(); }
|
||||
-};
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps<JS::Rooted<T>> : mozilla::TrueType {
|
||||
- static const T& get(const JS::Rooted<T>& v) { return v.get(); }
|
||||
-};
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps<JS::Handle<T>> : mozilla::TrueType {
|
||||
- static const T& get(const JS::Handle<T>& v) { return v.get(); }
|
||||
-};
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps<JS::MutableHandle<T>> : mozilla::TrueType {
|
||||
- static const T& get(const JS::MutableHandle<T>& v) { return v.get(); }
|
||||
-};
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps<JS::PersistentRooted<T>> : mozilla::TrueType {
|
||||
- static const T& get(const JS::PersistentRooted<T>& v) { return v.get(); }
|
||||
-};
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps<js::FakeRooted<T>> : mozilla::TrueType {
|
||||
- static const T& get(const js::FakeRooted<T>& v) { return v.get(); }
|
||||
-};
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps<js::FakeMutableHandle<T>> : mozilla::TrueType {
|
||||
- static const T& get(const js::FakeMutableHandle<T>& v) { return v.get(); }
|
||||
-};
|
||||
-
|
||||
-} /* namespace detail */
|
||||
-} /* namespace js */
|
||||
-
|
||||
-// Overload operator== and operator!= for all types with the DefineComparisonOps
|
||||
-// trait using the supplied getter.
|
||||
-//
|
||||
-// There are four cases:
|
||||
-
|
||||
-// Case 1: comparison between two wrapper objects.
|
||||
-
|
||||
-template <typename T, typename U>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value &&
|
||||
- js::detail::DefineComparisonOps<U>::value, bool>::Type
|
||||
-operator==(const T& a, const U& b) {
|
||||
- return js::detail::DefineComparisonOps<T>::get(a) == js::detail::DefineComparisonOps<U>::get(b);
|
||||
-}
|
||||
-
|
||||
-template <typename T, typename U>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value &&
|
||||
- js::detail::DefineComparisonOps<U>::value, bool>::Type
|
||||
-operator!=(const T& a, const U& b) {
|
||||
- return !(a == b);
|
||||
-}
|
||||
-
|
||||
-// Case 2: comparison between a wrapper object and its unwrapped element type.
|
||||
-
|
||||
-template <typename T>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value, bool>::Type
|
||||
-operator==(const T& a, const typename T::ElementType& b) {
|
||||
- return js::detail::DefineComparisonOps<T>::get(a) == b;
|
||||
-}
|
||||
-
|
||||
-template <typename T>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value, bool>::Type
|
||||
-operator!=(const T& a, const typename T::ElementType& b) {
|
||||
- return !(a == b);
|
||||
-}
|
||||
-
|
||||
-template <typename T>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value, bool>::Type
|
||||
-operator==(const typename T::ElementType& a, const T& b) {
|
||||
- return a == js::detail::DefineComparisonOps<T>::get(b);
|
||||
-}
|
||||
-
|
||||
-template <typename T>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value, bool>::Type
|
||||
-operator!=(const typename T::ElementType& a, const T& b) {
|
||||
- return !(a == b);
|
||||
-}
|
||||
-
|
||||
-// Case 3: For pointer wrappers, comparison between the wrapper and a const
|
||||
-// element pointer.
|
||||
-
|
||||
-template <typename T>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value &&
|
||||
- mozilla::IsPointer<typename T::ElementType>::value, bool>::Type
|
||||
-operator==(const typename mozilla::RemovePointer<typename T::ElementType>::Type* a, const T& b) {
|
||||
- return a == js::detail::DefineComparisonOps<T>::get(b);
|
||||
-}
|
||||
-
|
||||
-template <typename T>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value &&
|
||||
- mozilla::IsPointer<typename T::ElementType>::value, bool>::Type
|
||||
-operator!=(const typename mozilla::RemovePointer<typename T::ElementType>::Type* a, const T& b) {
|
||||
- return !(a == b);
|
||||
-}
|
||||
-
|
||||
-template <typename T>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value &&
|
||||
- mozilla::IsPointer<typename T::ElementType>::value, bool>::Type
|
||||
-operator==(const T& a, const typename mozilla::RemovePointer<typename T::ElementType>::Type* b) {
|
||||
- return js::detail::DefineComparisonOps<T>::get(a) == b;
|
||||
-}
|
||||
-
|
||||
-template <typename T>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value &&
|
||||
- mozilla::IsPointer<typename T::ElementType>::value, bool>::Type
|
||||
-operator!=(const T& a, const typename mozilla::RemovePointer<typename T::ElementType>::Type* b) {
|
||||
- return !(a == b);
|
||||
-}
|
||||
-
|
||||
-// Case 4: For pointer wrappers, comparison between the wrapper and nullptr.
|
||||
-
|
||||
-template <typename T>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value &&
|
||||
- mozilla::IsPointer<typename T::ElementType>::value, bool>::Type
|
||||
-operator==(std::nullptr_t a, const T& b) {
|
||||
- return a == js::detail::DefineComparisonOps<T>::get(b);
|
||||
-}
|
||||
-
|
||||
-template <typename T>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value &&
|
||||
- mozilla::IsPointer<typename T::ElementType>::value, bool>::Type
|
||||
-operator!=(std::nullptr_t a, const T& b) {
|
||||
- return !(a == b);
|
||||
-}
|
||||
-
|
||||
-template <typename T>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value &&
|
||||
- mozilla::IsPointer<typename T::ElementType>::value, bool>::Type
|
||||
-operator==(const T& a, std::nullptr_t b) {
|
||||
- return js::detail::DefineComparisonOps<T>::get(a) == b;
|
||||
-}
|
||||
-
|
||||
-template <typename T>
|
||||
-typename mozilla::EnableIf<js::detail::DefineComparisonOps<T>::value &&
|
||||
- mozilla::IsPointer<typename T::ElementType>::value, bool>::Type
|
||||
-operator!=(const T& a, std::nullptr_t b) {
|
||||
- return !(a == b);
|
||||
-}
|
||||
-
|
||||
#undef DELETE_ASSIGNMENT_OPS
|
||||
|
||||
#endif /* js_RootingAPI_h */
|
||||
diff -up firefox-56.0/js/src/gc/Barrier.h.1337988 firefox-56.0/js/src/gc/Barrier.h
|
||||
--- firefox-56.0/js/src/gc/Barrier.h.1337988 2017-09-14 22:16:01.000000000 +0200
|
||||
+++ firefox-56.0/js/src/gc/Barrier.h 2017-09-25 10:34:11.206611695 +0200
|
||||
@@ -353,8 +353,8 @@ class WriteBarrieredBase : public Barrie
|
||||
explicit WriteBarrieredBase(const T& v) : BarrieredBase<T>(v) {}
|
||||
|
||||
public:
|
||||
- using ElementType = T;
|
||||
|
||||
+ DECLARE_POINTER_COMPARISON_OPS(T);
|
||||
DECLARE_POINTER_CONSTREF_OPS(T);
|
||||
|
||||
// Use this if the automatic coercion to T isn't working.
|
||||
@@ -612,13 +612,14 @@ class ReadBarriered : public ReadBarrier
|
||||
return *this;
|
||||
}
|
||||
|
||||
- const T& get() const {
|
||||
- if (InternalBarrierMethods<T>::isMarkable(this->value))
|
||||
- this->read();
|
||||
+ const T get() const {
|
||||
+ if (!InternalBarrierMethods<T>::isMarkable(this->value))
|
||||
+ return JS::GCPolicy<T>::initial();
|
||||
+ this->read();
|
||||
return this->value;
|
||||
}
|
||||
|
||||
- const T& unbarrieredGet() const {
|
||||
+ const T unbarrieredGet() const {
|
||||
return this->value;
|
||||
}
|
||||
|
||||
@@ -626,9 +627,9 @@ class ReadBarriered : public ReadBarrier
|
||||
return bool(this->value);
|
||||
}
|
||||
|
||||
- operator const T&() const { return get(); }
|
||||
+ operator const T() const { return get(); }
|
||||
|
||||
- const T& operator->() const { return get(); }
|
||||
+ const T operator->() const { return get(); }
|
||||
|
||||
T* unsafeGet() { return &this->value; }
|
||||
T const* unsafeGet() const { return &this->value; }
|
||||
@@ -955,35 +956,6 @@ typedef ReadBarriered<WasmTableObject*>
|
||||
|
||||
typedef ReadBarriered<Value> ReadBarrieredValue;
|
||||
|
||||
-namespace detail {
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps<PreBarriered<T>> : mozilla::TrueType {
|
||||
- static const T& get(const PreBarriered<T>& v) { return v.get(); }
|
||||
-};
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps<GCPtr<T>> : mozilla::TrueType {
|
||||
- static const T& get(const GCPtr<T>& v) { return v.get(); }
|
||||
-};
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps<HeapPtr<T>> : mozilla::TrueType {
|
||||
- static const T& get(const HeapPtr<T>& v) { return v.get(); }
|
||||
-};
|
||||
-
|
||||
-template <typename T>
|
||||
-struct DefineComparisonOps<ReadBarriered<T>> : mozilla::TrueType {
|
||||
- static const T& get(const ReadBarriered<T>& v) { return v.unbarrieredGet(); }
|
||||
-};
|
||||
-
|
||||
-template <>
|
||||
-struct DefineComparisonOps<HeapSlot> : mozilla::TrueType {
|
||||
- static const Value& get(const HeapSlot& v) { return v.get(); }
|
||||
-};
|
||||
-
|
||||
-} /* namespace detail */
|
||||
-
|
||||
} /* namespace js */
|
||||
|
||||
#endif /* gc_Barrier_h */
|
||||
diff -up firefox-56.0/js/src/jsapi-tests/testGCHeapPostBarriers.cpp.1337988 firefox-56.0/js/src/jsapi-tests/testGCHeapPostBarriers.cpp
|
||||
--- firefox-56.0/js/src/jsapi-tests/testGCHeapPostBarriers.cpp.1337988 2017-09-14 22:16:02.000000000 +0200
|
||||
+++ firefox-56.0/js/src/jsapi-tests/testGCHeapPostBarriers.cpp 2017-09-25 10:34:11.206611695 +0200
|
||||
@@ -5,7 +5,6 @@
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
-#include "mozilla/TypeTraits.h"
|
||||
#include "mozilla/UniquePtr.h"
|
||||
|
||||
#include "js/RootingAPI.h"
|
||||
diff -up firefox-56.0/js/src/vm/SharedMem.h.1337988 firefox-56.0/js/src/vm/SharedMem.h
|
||||
--- firefox-56.0/js/src/vm/SharedMem.h.1337988 2017-06-15 22:52:29.000000000 +0200
|
||||
+++ firefox-56.0/js/src/vm/SharedMem.h 2017-09-25 10:34:11.206611695 +0200
|
||||
@@ -12,8 +12,8 @@
|
||||
template<typename T>
|
||||
class SharedMem
|
||||
{
|
||||
- // static_assert(mozilla::IsPointer<T>::value,
|
||||
- // "SharedMem encapsulates pointer types");
|
||||
+ static_assert(mozilla::IsPointer<T>::value,
|
||||
+ "SharedMem encapsulates pointer types");
|
||||
|
||||
enum Sharedness {
|
||||
IsUnshared,
|
||||
diff -up firefox-56.0/js/xpconnect/src/XPCInlines.h.1337988 firefox-56.0/js/xpconnect/src/XPCInlines.h
|
||||
--- firefox-56.0/js/xpconnect/src/XPCInlines.h.1337988 2017-09-14 22:16:03.000000000 +0200
|
||||
+++ firefox-56.0/js/xpconnect/src/XPCInlines.h 2017-09-25 10:34:11.206611695 +0200
|
||||
@@ -465,7 +465,7 @@ inline
|
||||
void XPCWrappedNativeTearOff::JSObjectMoved(JSObject* obj, const JSObject* old)
|
||||
{
|
||||
MOZ_ASSERT(!IsMarked());
|
||||
- MOZ_ASSERT(mJSObject == old);
|
||||
+ MOZ_ASSERT(mJSObject.unbarrieredGetPtr() == old);
|
||||
mJSObject = obj;
|
||||
}
|
||||
|
||||
diff -up firefox-56.0/js/xpconnect/src/XPCWrappedNative.cpp.1337988 firefox-56.0/js/xpconnect/src/XPCWrappedNative.cpp
|
||||
--- firefox-56.0/js/xpconnect/src/XPCWrappedNative.cpp.1337988 2017-09-14 22:16:03.000000000 +0200
|
||||
+++ firefox-56.0/js/xpconnect/src/XPCWrappedNative.cpp 2017-09-25 10:34:11.207611692 +0200
|
||||
@@ -874,7 +874,7 @@ void
|
||||
XPCWrappedNative::FlatJSObjectMoved(JSObject* obj, const JSObject* old)
|
||||
{
|
||||
JS::AutoAssertGCCallback inCallback;
|
||||
- MOZ_ASSERT(mFlatJSObject == old);
|
||||
+ MOZ_ASSERT(mFlatJSObject.unbarrieredGetPtr() == old);
|
||||
|
||||
nsWrapperCache* cache = nullptr;
|
||||
CallQueryInterface(mIdentity, &cache);
|
||||
diff -up firefox-56.0/js/xpconnect/src/XPCWrappedNativeProto.cpp.1337988 firefox-56.0/js/xpconnect/src/XPCWrappedNativeProto.cpp
|
||||
--- firefox-56.0/js/xpconnect/src/XPCWrappedNativeProto.cpp.1337988 2017-07-31 18:20:47.000000000 +0200
|
||||
+++ firefox-56.0/js/xpconnect/src/XPCWrappedNativeProto.cpp 2017-09-25 10:34:11.207611692 +0200
|
||||
@@ -101,7 +101,7 @@ XPCWrappedNativeProto::CallPostCreatePro
|
||||
void
|
||||
XPCWrappedNativeProto::JSProtoObjectFinalized(js::FreeOp* fop, JSObject* obj)
|
||||
{
|
||||
- MOZ_ASSERT(obj == mJSProtoObject, "huh?");
|
||||
+ MOZ_ASSERT(obj == mJSProtoObject.unbarrieredGet(), "huh?");
|
||||
|
||||
#ifdef DEBUG
|
||||
// Check that this object has already been swept from the map.
|
||||
@@ -117,7 +117,7 @@ XPCWrappedNativeProto::JSProtoObjectFina
|
||||
void
|
||||
XPCWrappedNativeProto::JSProtoObjectMoved(JSObject* obj, const JSObject* old)
|
||||
{
|
||||
- MOZ_ASSERT(mJSProtoObject == old);
|
||||
+ MOZ_ASSERT(mJSProtoObject.unbarrieredGet() == old);
|
||||
mJSProtoObject.init(obj); // Update without triggering barriers.
|
||||
}
|
||||
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
--- a/js/xpconnect/src/XPCWrappedNative.cpp.1512162 2019-07-17 22:51:30.000000000 +0200
|
||||
+++ b/js/xpconnect/src/XPCWrappedNative.cpp 2019-07-25 08:08:18.512528313 +0200
|
||||
@@ -1055,7 +1055,7 @@
|
||||
diff -up firefox-68.0.1/js/xpconnect/src/XPCWrappedNative.cpp.1512162 firefox-68.0.1/js/xpconnect/src/XPCWrappedNative.cpp
|
||||
--- firefox-68.0.1/js/xpconnect/src/XPCWrappedNative.cpp.1512162 2019-07-17 22:51:30.000000000 +0200
|
||||
+++ firefox-68.0.1/js/xpconnect/src/XPCWrappedNative.cpp 2019-07-25 08:08:18.512528313 +0200
|
||||
@@ -1092,7 +1092,7 @@ class MOZ_STACK_CLASS CallMethodHelper f
|
||||
MOZ_ALWAYS_INLINE bool GetOutParamSource(uint8_t paramIndex,
|
||||
MutableHandleValue srcp) const;
|
||||
|
||||
|
|
@ -9,7 +10,7 @@
|
|||
|
||||
MOZ_ALWAYS_INLINE bool QueryInterfaceFastPath();
|
||||
|
||||
@@ -1102,7 +1102,7 @@
|
||||
@@ -1139,7 +1139,7 @@ class MOZ_STACK_CLASS CallMethodHelper f
|
||||
|
||||
~CallMethodHelper();
|
||||
|
||||
|
|
@ -18,3 +19,25 @@
|
|||
|
||||
// Trace implementation so we can put our CallMethodHelper in a Rooted<T>.
|
||||
void trace(JSTracer* aTrc);
|
||||
@@ -1157,6 +1157,10 @@ bool XPCWrappedNative::CallMethod(XPCCal
|
||||
return helper.get().Call();
|
||||
}
|
||||
|
||||
+#if (__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN)
|
||||
+// Work around a compiler bug on ppc64le (bug 1512162).
|
||||
+__attribute__ ((noinline,noclone))
|
||||
+#endif
|
||||
bool CallMethodHelper::Call() {
|
||||
mCallContext.SetRetVal(JS::UndefinedValue());
|
||||
|
||||
@@ -1315,6 +1319,10 @@ bool CallMethodHelper::GetOutParamSource
|
||||
return true;
|
||||
}
|
||||
|
||||
+#if (__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN)
|
||||
+// Work around a compiler bug on ppc64le (bug 1512162).
|
||||
+__attribute__ ((noinline,noclone))
|
||||
+#endif
|
||||
bool CallMethodHelper::GatherAndConvertResults() {
|
||||
// now we iterate through the native params to gather and convert results
|
||||
uint8_t paramCount = mMethodInfo->GetParamCount();
|
||||
|
|
|
|||
15
mozilla-1516803.patch
Normal file
15
mozilla-1516803.patch
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
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()
|
||||
51
mozilla-1580174-webrtc-popup.patch
Normal file
51
mozilla-1580174-webrtc-popup.patch
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp
|
||||
--- a/widget/gtk/nsWindow.cpp
|
||||
+++ b/widget/gtk/nsWindow.cpp
|
||||
@@ -1155,6 +1155,28 @@
|
||||
}
|
||||
}
|
||||
|
||||
+bool IsPopupWithoutToplevelParent(nsMenuPopupFrame* aMenuPopupFrame) {
|
||||
+ // Check if the popup is autocomplete (like tags autocomplete
|
||||
+ // in the bookmark edit popup).
|
||||
+ nsAtom* popupId = aMenuPopupFrame->GetContent()->GetID();
|
||||
+ if (popupId && popupId->Equals(NS_LITERAL_STRING("PopupAutoComplete"))) {
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ // Check if the popup is in popupnotificationcontent (like choosing capture
|
||||
+ // device when starting webrtc session).
|
||||
+ nsIFrame* parentFrame = aMenuPopupFrame->GetParent();
|
||||
+ if (!parentFrame) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ parentFrame = parentFrame->GetParent();
|
||||
+ if (parentFrame && parentFrame->GetContent()->NodeName().EqualsLiteral(
|
||||
+ "popupnotificationcontent")) {
|
||||
+ return true;
|
||||
+ }
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
// Wayland keeps strong popup window hierarchy. We need to track active
|
||||
// (visible) popup windows and make sure we hide popup on the same level
|
||||
// before we open another one on that level. It means that every open
|
||||
@@ -1211,10 +1233,14 @@
|
||||
LOG(("...[%p] GetParentMenuWidget() = %p\n", (void*)this, parentWindow));
|
||||
|
||||
// If the popup is a regular menu but GetParentMenuWidget() returns
|
||||
- // nullptr which means it's connected non-menu parent
|
||||
- // (bookmark toolbar for instance).
|
||||
+ // nullptr which means is not a submenu of any other menu.
|
||||
// In this case use a parent given at nsWindow::Create().
|
||||
- if (!parentWindow && !menuPopupFrame->IsContextMenu()) {
|
||||
+ // But we have to avoid using mToplevelParentWindow in case the popup
|
||||
+ // is in 'popupnotificationcontent' element or autocomplete popup,
|
||||
+ // otherwise the popupnotification would disappear when for
|
||||
+ // example opening a popup with microphone selection.
|
||||
+ if (!parentWindow && !menuPopupFrame->IsContextMenu() &&
|
||||
+ !IsPopupWithoutToplevelParent(menuPopupFrame)) {
|
||||
parentWindow =
|
||||
get_window_for_gtk_widget(GTK_WIDGET(mToplevelParentWindow));
|
||||
}
|
||||
|
||||
15
mozilla-1669639.patch
Normal file
15
mozilla-1669639.patch
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
--- 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)
|
||||
|
||||
|
||||
25
mp4parse-rust-8b5b652d38e007e736bb442ccd5aa5ed699db100.patch
Normal file
25
mp4parse-rust-8b5b652d38e007e736bb442ccd5aa5ed699db100.patch
Normal file
File diff suppressed because one or more lines are too long
12
rhbz-1173156.patch
Normal file
12
rhbz-1173156.patch
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
diff -up a/extensions/auth/nsAuthSambaNTLM.cpp.old b/extensions/auth/nsAuthSambaNTLM.cpp
|
||||
--- a/extensions/auth/nsAuthSambaNTLM.cpp.old 2014-11-25 12:23:22.000000000 +0100
|
||||
+++ b/extensions/auth/nsAuthSambaNTLM.cpp 2014-12-23 15:26:36.606674625 +0100
|
||||
@@ -161,7 +161,7 @@
|
||||
const char* username = PR_GetEnv("USER");
|
||||
if (!username) return NS_ERROR_FAILURE;
|
||||
|
||||
- const char* const args[] = {"ntlm_auth",
|
||||
+ const char* const args[] = {"/usr/bin/ntlm_auth",
|
||||
"--helper-protocol",
|
||||
"ntlmssp-client-1",
|
||||
"--use-cached-creds",
|
||||
23
rhbz-1219542-s390-build.patch
Normal file
23
rhbz-1219542-s390-build.patch
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
diff -up firefox-55.0/js/src/old-configure.in.rhbz-1219542-s390 firefox-55.0/js/src/old-configure.in
|
||||
--- firefox-55.0/js/src/old-configure.in.rhbz-1219542-s390 2017-07-31 18:20:48.000000000 +0200
|
||||
+++ firefox-55.0/js/src/old-configure.in 2017-08-02 14:31:32.190243669 +0200
|
||||
@@ -541,7 +541,7 @@ case "$host" in
|
||||
|
||||
*-linux*|*-kfreebsd*-gnu|*-gnu*)
|
||||
HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
|
||||
- HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
|
||||
+ HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O1}"
|
||||
;;
|
||||
|
||||
*)
|
||||
@@ -617,8 +617,8 @@ case "$target" in
|
||||
|
||||
*-*linux*)
|
||||
if test "$GNU_CC" -o "$GNU_CXX"; then
|
||||
- MOZ_PGO_OPTIMIZE_FLAGS="-O3"
|
||||
- MOZ_OPTIMIZE_FLAGS="-O3"
|
||||
+ MOZ_PGO_OPTIMIZE_FLAGS="-O1"
|
||||
+ MOZ_OPTIMIZE_FLAGS="-O1"
|
||||
if test -z "$CLANG_CC"; then
|
||||
MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS"
|
||||
fi
|
||||
|
|
@ -20,24 +20,21 @@ 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
|
||||
|
||||
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
|
||||
. xvfb-run -s "-screen 0 1600x1200x24" -n 80 mutter --display=:80 --wayland --nested &
|
||||
export DISPLAY=:80
|
||||
|
||||
if [ -z "$WAYLAND_DISPLAY" ] ; then
|
||||
export WAYLAND_DISPLAY=wayland-0
|
||||
else
|
||||
export WAYLAND_DISPLAY=wayland-1
|
||||
fi
|
||||
|
||||
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
|
||||
sleep 10
|
||||
retry_count=0
|
||||
max_retries=5
|
||||
until [ $retry_count -gt $max_retries ]; do
|
||||
|
|
@ -50,11 +47,4 @@ until [ $retry_count -gt $max_retries ]; do
|
|||
fi
|
||||
done
|
||||
|
||||
if [ ! -S "$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" ]; then
|
||||
echo "Mutter failed to start!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Mutter is running, $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY is here."
|
||||
|
||||
|
||||
env | grep "DISPLAY"
|
||||
|
|
|
|||
154
rust-bindgen-2319-2339.patch
Normal file
154
rust-bindgen-2319-2339.patch
Normal file
|
|
@ -0,0 +1,154 @@
|
|||
--- 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) = 647dcadf3507bd05262613d03ff18a8c876bcbb4e83ce59f911128ae020ac16695298987c6c14f8b7a7aee5bb096740c6885c0a854d8b26431fc9a8ff864c369
|
||||
SHA512 (icecat-140.7.0-langpacks.tar.gz) = a4618e3272b48be4307c79222bdd55f321aefb6d6ba08beb10178d0b95530bc4130cf86901d0906e714bd75106ad8513957fe3ad335431c8faf5b2d9767e17de
|
||||
SHA512 (icecat-140.7.0-rh1.tar.bz2) = 7a19f7928322bea905828e6a4e981395687f1b649e37518a8000bcfcb29446b424ee592f708d0c7c93ebeb901820752785f883a937e9361e9f172a0a9bacb603
|
||||
SHA512 (cbindgen-vendor.tar.xz) = 9cb2a3007939aa2eae5e94b1adf2040d1fdbee9e1ce4367175f79e716e6a02e976c4053452b93c9b8c12cd19ffc4c7cb8ab66b1e97b1a90a64dfbff92698c792
|
||||
SHA512 (icecat-115.8.0-langpacks.tar.gz) = 762d24628bc5edbdce807b2be5de6ec1cfbc984f290a6bf9b25421af57480350cb454345a4303614f752bf2cc48eb7653d28c626b2a4f071dfcab3d11042ef9e
|
||||
SHA512 (icecat-115.8.0-rh1.tar.bz2) = 1ebd0791d54c7112263964d47a96b918728040cd04d39703f208c616b04fbaadc047f234ee2fc38c7b074e527a7014959b7280458796d60e1f8a5c80107a0505
|
||||
SHA512 (icecat-COPYING-licensefiles.tar.gz) = ed541845170f1d209e322b0def3248d571e0c42c4a17c74e83197e743bd8a128a1475f5312d905c8e70d047eddeac17e604373892eb6d5f1720c5c361849c42c
|
||||
SHA512 (icecat.png) = a3cec16cb15a27c3c91b53e2c534e78b07911011ff1331e450c0baf8e13b76da7cea2a90e5d75191fa88cfbfd40a0a7f3e553e92b64d0043dadd5ad5edfdf81c
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue