diff --git a/.gitignore b/.gitignore index c6b8353..241f013 100644 --- a/.gitignore +++ b/.gitignore @@ -243,3 +243,56 @@ /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 diff --git a/build-aarch64-skia.patch b/build-aarch64-skia.patch deleted file mode 100644 index e669ba5..0000000 --- a/build-aarch64-skia.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- 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(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(vcvt_f16_f32(f)); - diff --git a/build-arm-libopus.patch b/build-arm-libopus.patch deleted file mode 100644 index 1b3f31b..0000000 --- a/build-arm-libopus.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up firefox-66.0/media/libopus/silk/arm/arm_silk_map.c.old firefox-66.0/media/libopus/silk/arm/arm_silk_map.c ---- firefox-66.0/media/libopus/silk/arm/arm_silk_map.c.old 2019-03-12 21:07:35.356677522 +0100 -+++ firefox-66.0/media/libopus/silk/arm/arm_silk_map.c 2019-03-12 21:07:42.937693394 +0100 -@@ -28,7 +28,7 @@ POSSIBILITY OF SUCH DAMAGE. - # include "config.h" - #endif - --#include "main_FIX.h" -+#include "fixed/main_FIX.h" - #include "NSQ.h" - #include "SigProc_FIX.h" - diff --git a/build-disable-elfhack.patch b/build-disable-elfhack.patch deleted file mode 100644 index 483d4c4..0000000 --- a/build-disable-elfhack.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- 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) - diff --git a/firefox-nss-version.patch b/firefox-nss-version.patch deleted file mode 100644 index fee93bb..0000000 --- a/firefox-nss-version.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up firefox-78.0/toolkit/moz.configure.nss-version firefox-78.0/toolkit/moz.configure ---- firefox-78.0/toolkit/moz.configure.nss-version 2020-06-30 08:47:09.657501414 +0200 -+++ firefox-78.0/toolkit/moz.configure 2020-06-30 08:47:12.652510169 +0200 -@@ -2089,7 +2089,7 @@ option('--with-system-nss', help='Use sy - - imply_option('--with-system-nspr', True, when='--with-system-nss') - --nss_pkg = pkg_check_modules('NSS', 'nss >= 3.53.1', when='--with-system-nss', config=False) -+nss_pkg = pkg_check_modules('NSS', 'nss >= 3.53.0', when='--with-system-nss', config=False) - - set_config('MOZ_SYSTEM_NSS', True, when='--with-system-nss') - diff --git a/icecat-1742849.patch b/icecat-1742849.patch deleted file mode 100644 index be05497..0000000 --- a/icecat-1742849.patch +++ /dev/null @@ -1,425 +0,0 @@ - -# HG changeset patch -# User Alexandre Lissy -# 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 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 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 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 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() - - diff --git a/icecat-commasplit.patch b/icecat-commasplit.patch deleted file mode 100644 index a56aec4..0000000 --- a/icecat-commasplit.patch +++ /dev/null @@ -1,76 +0,0 @@ ---- firefox-111.0.1/build/moz.configure/rust.configure 2023-03-21 06:16:03.000000000 -0700 -+++ firefox-111.0.1/build/moz.configure/rust.configure.new 2023-04-05 08:57:29.403219120 -0700 -@@ -593,7 +593,7 @@ - - # ============================================================== - --option(env="RUSTFLAGS", nargs=1, help="Rust compiler flags") -+option(env="RUSTFLAGS", nargs=1, help="Rust compiler flags", comma_split=False) - set_config("RUSTFLAGS", depends("RUSTFLAGS")(lambda flags: flags)) - - ---- firefox-111.0.1/python/mozbuild/mozbuild/configure/options.py 2023-03-21 06:16:09.000000000 -0700 -+++ firefox-111.0.1/python/mozbuild/mozbuild/configure/options.py.new 2023-04-05 08:57:31.270193468 -0700 -@@ -191,6 +191,10 @@ - to instantiate an option indirectly. Set this to a positive integer to - force the script to look into a deeper stack frame when inferring the - `category`. -+ - `comma_split` specifies whether the value string should be split on -+ commas. The default is True. Setting it False is necessary for things -+ like compiler flags which should be a single string that may contain -+ commas. - """ - - __slots__ = ( -@@ -205,6 +209,7 @@ - "possible_origins", - "category", - "define_depth", -+ "comma_split", - ) - - def __init__( -@@ -218,6 +223,7 @@ - category=None, - help=None, - define_depth=0, -+ comma_split=True, - ): - if not name and not env: - raise InvalidOptionError( -@@ -335,9 +341,10 @@ - self.choices = choices - self.help = help - self.category = category or _infer_option_category(define_depth) -+ self.comma_split = comma_split - - @staticmethod -- def split_option(option): -+ def split_option(option, comma_split=True): - """Split a flag or variable into a prefix, a name and values - - Variables come in the form NAME=values (no prefix). -@@ -350,7 +357,13 @@ - - elements = option.split("=", 1) - name = elements[0] -- values = tuple(elements[1].split(",")) if len(elements) == 2 else () -+ if len(elements) == 2: -+ if comma_split: -+ values = tuple(elements[1].split(",")) -+ else: -+ values = (elements[1],) -+ else: -+ values = () - if name.startswith("--"): - name = name[2:] - if not name.islower(): -@@ -426,7 +439,7 @@ - % (option, origin, ", ".join(self.possible_origins)) - ) - -- prefix, name, values = self.split_option(option) -+ prefix, name, values = self.split_option(option, self.comma_split) - option = self._join_option(prefix, name) - - assert name in (self.name, self.env) diff --git a/icecat-fix_addon_installation.patch b/icecat-fix_addon_installation.patch deleted file mode 100644 index 5cc140d..0000000 --- a/icecat-fix_addon_installation.patch +++ /dev/null @@ -1,36 +0,0 @@ -# Fixes installation of those addons which don't have ID on IceCat ("Cannot find id for addon" error). ---- a/toolkit/mozapps/extensions/internal/XPIInstall.jsm -+++ b/toolkit/mozapps/extensions/internal/XPIInstall.jsm -@@ -627,8 +627,30 @@ - throw new Error(`Extension is signed with an invalid id (${addon.id})`); - } - } -- if (!addon.id && aLocation.isTemporary) { -- addon.id = generateTemporaryInstallID(aPackage.file); -+ if (!addon.id) { -+ if (aInstallLocation.name == KEY_APP_TEMPORARY) { -+ addon.id = generateTemporaryInstallID(aZipReader.file); -+ } else { -+ try { -+ let sigInput = aZipReader.getInputStream("META-INF/cose.sig"); -+ let sigBinary = Cc['@mozilla.org/binaryinputstream;1'] -+ .createInstance(Ci.nsIBinaryInputStream); -+ sigBinary.setInputStream(sigInput); -+ var sig = '' -+ var sigCount; -+ while ((sigCount = sigBinary.available()) > 0) { -+ sig += sigBinary.readBytes(sigCount); -+ } -+ let sigMatch = sig.match(/\{\w{8}-\w{4}-\w{4}-\w{4}-\w{12}\}/g) -+ if (sigMatch && sigMatch.length == 1) { -+ addon.id = sigMatch[0] -+ } else { -+ logger.warn("Failed to find addon id"); -+ } -+ } catch (e) { -+ logger.warn("Failed to process META-INF/cose.sig"); -+ } -+ } - } - } - diff --git a/icecat-gcc-always-inline.patch b/icecat-gcc-always-inline.patch new file mode 100644 index 0000000..d7af60f --- /dev/null +++ b/icecat-gcc-always-inline.patch @@ -0,0 +1,14 @@ +diff -up firefox-114.0.2/gfx/wr/swgl/src/gl.cc.inline firefox-114.0.2/gfx/wr/swgl/src/gl.cc +--- firefox-114.0.2/gfx/wr/swgl/src/gl.cc.inline 2023-06-22 11:08:53.294593327 +0200 ++++ firefox-114.0.2/gfx/wr/swgl/src/gl.cc 2023-06-22 11:12:43.663486734 +0200 +@@ -58,9 +58,7 @@ WINBASEAPI BOOL WINAPI QueryPerformanceF + } + + #else +-// GCC is slower when dealing with always_inline, especially in debug builds. +-// When using Clang, use always_inline more aggressively. +-# if defined(__clang__) || defined(NDEBUG) ++# if defined(__clang__) || defined (__GNUC__) || defined(NDEBUG) + # define ALWAYS_INLINE __attribute__((always_inline)) inline + # else + # define ALWAYS_INLINE inline diff --git a/icecat-glibc-dynstack.patch b/icecat-glibc-dynstack.patch deleted file mode 100644 index 74878b5..0000000 --- a/icecat-glibc-dynstack.patch +++ /dev/null @@ -1,62 +0,0 @@ -diff -ur a/js/xpconnect/src/XPCJSContext.cpp b/js/xpconnect/src/XPCJSContext.cpp ---- a/js/xpconnect/src/XPCJSContext.cpp 2021-07-05 21:16:02.000000000 +0200 -+++ b/js/xpconnect/src/XPCJSContext.cpp 2021-07-19 15:01:24.083460460 +0200 -@@ -81,14 +81,6 @@ - using namespace JS; - using mozilla::dom::AutoEntryScript; - --// The watchdog thread loop is pretty trivial, and should not require much stack --// space to do its job. So only give it 32KiB or the platform minimum. --#if !defined(PTHREAD_STACK_MIN) --# define PTHREAD_STACK_MIN 0 --#endif --static constexpr size_t kWatchdogStackSize = -- PTHREAD_STACK_MIN < 32 * 1024 ? 32 * 1024 : PTHREAD_STACK_MIN; -- - static void WatchdogMain(void* arg); - class Watchdog; - class WatchdogManager; -@@ -161,7 +153,7 @@ - // watchdog, we need to join it on shutdown. - mThread = PR_CreateThread(PR_USER_THREAD, WatchdogMain, this, - PR_PRIORITY_NORMAL, PR_GLOBAL_THREAD, -- PR_JOINABLE_THREAD, kWatchdogStackSize); -+ PR_JOINABLE_THREAD, 0); - if (!mThread) { - MOZ_CRASH("PR_CreateThread failed!"); - } -diff -ur a/security/sandbox/linux/launch/SandboxLaunch.cpp b/security/sandbox/linux/launch/SandboxLaunch.cpp ---- a/security/sandbox/linux/launch/SandboxLaunch.cpp 2021-07-05 18:20:36.000000000 +0200 -+++ b/security/sandbox/linux/launch/SandboxLaunch.cpp 2021-07-20 08:39:17.272136982 +0200 -@@ -489,7 +489,8 @@ static int CloneCallee(void* aPtr) { - // we don't currently support sandboxing under valgrind. - MOZ_NEVER_INLINE MOZ_ASAN_BLACKLIST static pid_t DoClone(int aFlags, - jmp_buf* aCtx) { -- uint8_t miniStack[PTHREAD_STACK_MIN]; -+ static constexpr size_t kStackAlignment = 16; -+ uint8_t miniStack[4096] __attribute__((aligned(kStackAlignment))); - #ifdef __hppa__ - void* stackPtr = miniStack; - #else -@@ -510,13 +511,19 @@ static pid_t ForkWithFlags(int aFlags) { - CLONE_CHILD_CLEARTID; - MOZ_RELEASE_ASSERT((aFlags & kBadFlags) == 0); - -+ // Block signals due to small stack in DoClone. -+ sigset_t oldSigs; -+ BlockAllSignals(&oldSigs); -+ -+ int ret = 0; - jmp_buf ctx; - if (setjmp(ctx) == 0) { - // In the parent and just called setjmp: -- return DoClone(aFlags | SIGCHLD, &ctx); -+ ret = DoClone(aFlags | SIGCHLD, &ctx); - } -+ RestoreSignals(&oldSigs); - // In the child and have longjmp'ed: -- return 0; -+ return ret; - } - - static bool WriteStringToFile(const char* aPath, const char* aStr, diff --git a/icecat-lang_download.sh b/icecat-lang_download.sh index 70498c5..3c0c445 100755 --- a/icecat-lang_download.sh +++ b/icecat-lang_download.sh @@ -1,6 +1,6 @@ #!/bin/bash -VERSION=115.8.0 +VERSION=140.7.0 URL=https://ftp.mozilla.org/pub/firefox/releases/${VERSION}esr/linux-x86_64/xpi/ for u in $URL; do diff --git a/icecat-pgo.patch b/icecat-pgo.patch deleted file mode 100644 index 3b9fde4..0000000 --- a/icecat-pgo.patch +++ /dev/null @@ -1,115 +0,0 @@ -diff -up firefox-99.0/build/moz.configure/lto-pgo.configure.pgo firefox-99.0/build/moz.configure/lto-pgo.configure ---- firefox-99.0/build/moz.configure/lto-pgo.configure.pgo 2022-03-31 01:24:38.000000000 +0200 -+++ firefox-99.0/build/moz.configure/lto-pgo.configure 2022-04-04 10:15:45.387694143 +0200 -@@ -247,8 +247,8 @@ def lto( - cflags.append("-flto") - ldflags.append("-flto") - else: -- cflags.append("-flto=thin") -- ldflags.append("-flto=thin") -+ cflags.append("-flto") -+ ldflags.append("-flto") - - if target.os == "Android" and value == "cross": - # Work around https://github.com/rust-lang/rust/issues/90088 -@@ -264,7 +264,7 @@ def lto( - if value == "full": - cflags.append("-flto") - else: -- cflags.append("-flto=thin") -+ cflags.append("-flto") - # With clang-cl, -flto can only be used with -c or -fuse-ld=lld. - # AC_TRY_LINKs during configure don't have -c, so pass -fuse-ld=lld. - cflags.append("-fuse-ld=lld") -diff -up firefox-99.0/build/pgo/profileserver.py.pgo firefox-99.0/build/pgo/profileserver.py ---- firefox-99.0/build/pgo/profileserver.py.pgo 2022-03-31 01:24:38.000000000 +0200 -+++ firefox-99.0/build/pgo/profileserver.py 2022-04-04 10:15:45.387694143 +0200 -@@ -11,7 +11,7 @@ - import subprocess - - import mozcrash --from mozbuild.base import MozbuildObject, BinaryNotFoundException -+from mozbuild.base import MozbuildObject, BinaryNotFoundException, BuildEnvironmentNotFoundException - from mozfile import TemporaryDirectory - from mozhttpd import MozHttpd - from mozprofile import IceCatProfile, Preferences -@@ -87,9 +87,22 @@ - locations = ServerLocations() - locations.add_host(host="127.0.0.1", port=PORT, options="primary,privileged") - -- old_profraw_files = glob.glob("*.profraw") -- for f in old_profraw_files: -- os.remove(f) -+ using_gcc = False -+ try: -+ if build.config_environment.substs.get('CC_TYPE') == 'gcc': -+ using_gcc = True -+ except BuildEnvironmentNotFoundException: -+ pass -+ -+ if using_gcc: -+ for dirpath, _, filenames in os.walk('.'): -+ for f in filenames: -+ if f.endswith('.gcda'): -+ os.remove(os.path.join(dirpath, f)) -+ else: -+ old_profraw_files = glob.glob('*.profraw') -+ for f in old_profraw_files: -+ os.remove(f) - - with TemporaryDirectory() as profilePath: - # TODO: refactor this into mozprofile -@@ -212,6 +225,9 @@ - if get_crashreports(profilePath, name="IceCat exited successfully?") != 0: - print("IceCat exited successfully, but produced a crashreport") - sys.exit(1) -+ print('Copying profile data....') -+ os.system('pwd'); -+ os.system('tar cf profdata.tar.gz `find . -name "*.gcda"`; cd ..; tar xf instrumented/profdata.tar.gz;'); - - llvm_profdata = env.get("LLVM_PROFDATA") - if llvm_profdata: -diff -up firefox-99.0/build/unix/mozconfig.unix.pgo firefox-99.0/build/unix/mozconfig.unix ---- firefox-99.0/build/unix/mozconfig.unix.pgo 2022-03-31 01:24:38.000000000 +0200 -+++ firefox-99.0/build/unix/mozconfig.unix 2022-04-04 10:15:45.387694143 +0200 -@@ -4,6 +4,15 @@ if [ -n "$FORCE_GCC" ]; then - CC="$MOZ_FETCHES_DIR/gcc/bin/gcc" - CXX="$MOZ_FETCHES_DIR/gcc/bin/g++" - -+ if [ -n "$MOZ_PGO" ]; then -+ if [ -z "$USE_ARTIFACT" ]; then -+ ac_add_options --enable-lto -+ fi -+ export AR="$topsrcdir/gcc/bin/gcc-ar" -+ export NM="$topsrcdir/gcc/bin/gcc-nm" -+ export RANLIB="$topsrcdir/gcc/bin/gcc-ranlib" -+ fi -+ - # We want to make sure we use binutils and other binaries in the tooltool - # package. - mk_add_options "export PATH=$MOZ_FETCHES_DIR/gcc/bin:$PATH" -diff -up firefox-99.0/extensions/spellcheck/src/moz.build.pgo firefox-99.0/extensions/spellcheck/src/moz.build ---- firefox-99.0/extensions/spellcheck/src/moz.build.pgo 2022-03-31 01:24:50.000000000 +0200 -+++ firefox-99.0/extensions/spellcheck/src/moz.build 2022-04-04 10:15:45.387694143 +0200 -@@ -28,3 +28,5 @@ EXPORTS.mozilla += [ - "mozInlineSpellChecker.h", - "mozSpellChecker.h", - ] -+ -+CXXFLAGS += ['-fno-devirtualize'] -diff -up firefox-99.0/toolkit/components/terminator/nsTerminator.cpp.pgo firefox-99.0/toolkit/components/terminator/nsTerminator.cpp ---- firefox-99.0/toolkit/components/terminator/nsTerminator.cpp.pgo 2022-04-04 10:15:45.387694143 +0200 -+++ firefox-99.0/toolkit/components/terminator/nsTerminator.cpp 2022-04-04 10:19:07.022239556 +0200 -@@ -466,6 +466,11 @@ void nsTerminator::StartWatchdog() { - } - #endif - -+ // Disable watchdog for PGO train builds - writting profile information at -+ // exit may take time and it is better to make build hang rather than -+ // silently produce poorly performing binary. -+ crashAfterMS = INT32_MAX; -+ - UniquePtr options(new Options()); - // crashAfterTicks is guaranteed to be > 0 as - // crashAfterMS >= ADDITIONAL_WAIT_BEFORE_CRASH_MS >> HEARTBEAT_INTERVAL_MS - diff --git a/icecat-python3.11-open-U.patch b/icecat-python3.11-open-U.patch deleted file mode 100644 index 5490515..0000000 --- a/icecat-python3.11-open-U.patch +++ /dev/null @@ -1,93 +0,0 @@ ---- a/dom/base/usecounters.py.python-open-U 2022-06-28 04:37:00.000000000 +0200 -+++ b/dom/base/usecounters.py 2022-07-11 19:17:46.266517761 +0200 -@@ -8,7 +8,7 @@ import re - - def read_conf(conf_filename): - # Can't read/write from a single StringIO, so make a new one for reading. -- stream = open(conf_filename, "rU") -+ stream = open(conf_filename, "r") - - def parse_counters(stream): - for line_num, line in enumerate(stream): ---- a/python/mozbuild/mozbuild/action/process_define_files.py.python-open-U 2022-06-28 04:37:39.000000000 +0200 -+++ b/python/mozbuild/mozbuild/action/process_define_files.py 2022-07-11 19:18:24.056417112 +0200 -@@ -36,7 +36,7 @@ def process_define_file(output, input): - ) and not config.substs.get("JS_STANDALONE"): - config = PartialConfigEnvironment(mozpath.join(topobjdir, "js", "src")) - -- with open(path, "rU") as input: -+ with open(path, "r") as input: - r = re.compile( - "^\s*#\s*(?P[a-z]+)(?:\s+(?P\S+)(?:\s+(?P\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() diff --git a/icecat-python3.11-regex-inline-flags.patch b/icecat-python3.11-regex-inline-flags.patch deleted file mode 100644 index 39481ec..0000000 --- a/icecat-python3.11-regex-inline-flags.patch +++ /dev/null @@ -1,27 +0,0 @@ ---- thunderbird-91.11.0/xpcom/idl-parser/xpidl/xpidl.py.python-inline-flags 2022-06-28 04:39:56.000000000 +0200 -+++ thunderbird-91.11.0/xpcom/idl-parser/xpidl/xpidl.py 2022-07-11 21:55:05.287553042 +0200 -@@ -1563,13 +1563,13 @@ class IDLParser(object): - t_ignore = " \t" - - def t_multilinecomment(self, t): -- r"/\*(?s).*?\*/" -+ r"/\*(?s:.*?)\*/" - t.lexer.lineno += t.value.count("\n") - if t.value.startswith("/**"): - self._doccomments.append(t.value) - - def t_singlelinecomment(self, t): -- r"(?m)//.*?$" -+ r"(?m://.*?$)" - - def t_IID(self, t): - return t -@@ -1582,7 +1582,7 @@ class IDLParser(object): - return t - - def t_LCDATA(self, t): -- r"(?s)%\{[ ]*C\+\+[ ]*\n(?P.*?\n?)%\}[ ]*(C\+\+)?" -+ r"(?s:%\{[ ]*C\+\+[ ]*\n(?P.*?\n?)%\}[ ]*(C\+\+)?)" - t.type = "CDATA" - t.value = t.lexer.lexmatch.group("cdata") - t.lexer.lineno += t.value.count("\n") diff --git a/icecat-wayland.desktop b/icecat-wayland.desktop deleted file mode 100644 index 44e6c47..0000000 --- a/icecat-wayland.desktop +++ /dev/null @@ -1,23 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=GNU IceCat on Wayland -Comment=Browse the World Wide Web -GenericName=Web Browser -Keywords=Internet;WWW;Browser;Web;Explorer; -Exec=icecat-wayland --name icecat-wayland %u -Icon=icecat -Terminal=false -Type=Application -MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall; -Categories=Network;WebBrowser; -StartupNotify=true -Name[en_US]=GNU IceCat on Wayland -Actions=new-window;new-private-window; - -[Desktop Action new-window] -Name=Open a New Window -Exec=icecat-wayland --name icecat-wayland --new-window %u - -[Desktop Action new-private-window] -Name=Open a New Private Window -Exec=icecat-wayland --private-window --name icecat-wayland %u diff --git a/icecat-wayland.sh.in b/icecat-wayland.sh.in deleted file mode 100644 index d04465c..0000000 --- a/icecat-wayland.sh.in +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -# -# Run GNU IceCat under Wayland -# - -export MOZ_ENABLE_WAYLAND=1 -exec /__PREFIX__/bin/icecat "$@" diff --git a/icecat-x11.desktop b/icecat-x11.desktop deleted file mode 100644 index 6e7eea8..0000000 --- a/icecat-x11.desktop +++ /dev/null @@ -1,338 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=GNU IceCat on X11 -Comment=Browse the World Wide Web -Comment[ar]=تصفح الشبكة العنكبوتية العالمية -Comment[ast]=Restola pela Rede -Comment[bn]=ইন্টারনেট ব্রাউজ করুন -Comment[ca]=Navegueu per la web -Comment[cs]=Prohlížení stránek World Wide Webu -Comment[da]=Surf på internettet -Comment[de]=Im Internet surfen -Comment[el]=Μπορείτε να περιηγηθείτε στο διαδίκτυο (Web) -Comment[es]=Navegue por la web -Comment[et]=Lehitse veebi -Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید -Comment[fi]=Selaa Internetin WWW-sivuja -Comment[fr]=Naviguer sur le Web -Comment[gl]=Navegar pola rede -Comment[he]=גלישה ברחבי האינטרנט -Comment[hr]=Pretražite web -Comment[hu]=A világháló böngészése -Comment[it]=Esplora il web -Comment[ja]=ウェブを閲覧します -Comment[ko]=웹을 돌아 다닙니다 -Comment[ku]=Li torê bigere -Comment[lt]=Naršykite internete -Comment[nb]=Surf på nettet -Comment[nl]=Verken het internet -Comment[nn]=Surf på nettet -Comment[no]=Surf på nettet -Comment[pl]=Przeglądanie stron WWW -Comment[pt]=Navegue na Internet -Comment[pt_BR]=Navegue na Internet -Comment[ro]=Navigați pe Internet -Comment[ru]=Доступ в Интернет -Comment[sk]=Prehliadanie internetu -Comment[sl]=Brskajte po spletu -Comment[sv]=Surfa på webben -Comment[tr]=İnternet'te Gezinin -Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ -Comment[uk]=Перегляд сторінок Інтернету -Comment[vi]=Để duyệt các trang web -Comment[zh_CN]=浏览互联网 -Comment[zh_TW]=瀏覽網際網路 -GenericName=Web Browser -GenericName[ar]=متصفح ويب -GenericName[ast]=Restolador Web -GenericName[bn]=ওয়েব ব্রাউজার -GenericName[ca]=Navegador web -GenericName[cs]=Webový prohlížeč -GenericName[da]=Webbrowser -GenericName[el]=Περιηγητής διαδικτύου -GenericName[es]=Navegador web -GenericName[et]=Veebibrauser -GenericName[fa]=مرورگر اینترنتی -GenericName[fi]=WWW-selain -GenericName[fr]=Navigateur Web -GenericName[gl]=Navegador Web -GenericName[he]=דפדפן אינטרנט -GenericName[hr]=Web preglednik -GenericName[hu]=Webböngésző -GenericName[it]=Browser web -GenericName[ja]=ウェブ・ブラウザ -GenericName[ko]=웹 브라우저 -GenericName[ku]=Geroka torê -GenericName[lt]=Interneto naršyklė -GenericName[nb]=Nettleser -GenericName[nl]=Webbrowser -GenericName[nn]=Nettlesar -GenericName[no]=Nettleser -GenericName[pl]=Przeglądarka WWW -GenericName[pt]=Navegador Web -GenericName[pt_BR]=Navegador Web -GenericName[ro]=Navigator Internet -GenericName[ru]=Веб-браузер -GenericName[sk]=Internetový prehliadač -GenericName[sl]=Spletni brskalnik -GenericName[sv]=Webbläsare -GenericName[tr]=Web Tarayıcı -GenericName[ug]=توركۆرگۈ -GenericName[uk]=Веб-браузер -GenericName[vi]=Trình duyệt Web -GenericName[zh_CN]=网络浏览器 -GenericName[zh_TW]=網路瀏覽器 -Keywords=Internet;WWW;Browser;Web;Explorer; -Keywords[ar]=انترنت;إنترنت;متصفح;ويب;وب; -Keywords[ast]=Internet;WWW;Restolador;Web;Esplorador; -Keywords[ca]=Internet;WWW;Navegador;Web;Explorador;Explorer; -Keywords[cs]=Internet;WWW;Prohlížeč;Web;Explorer; -Keywords[da]=Internet;Internettet;WWW;Browser;Browse;Web;Surf;Nettet; -Keywords[de]=Internet;WWW;Browser;Web;Explorer;Webseite;Site;surfen;online;browsen; -Keywords[el]=Internet;WWW;Browser;Web;Explorer;Διαδίκτυο;Περιηγητής;IceCat;Φιρεφοχ;Ιντερνετ; -Keywords[es]=Explorador;Internet;WWW; -Keywords[fi]=Internet;WWW;Browser;Web;Explorer;selain;Internet-selain;internetselain;verkkoselain;netti;surffaa; -Keywords[fr]=Internet;WWW;Browser;Web;Explorer;Fureteur;Surfer;Navigateur; -Keywords[he]=דפדפן;אינטרנט;רשת;אתרים;אתר;פיירפוקס;מוזילה; -Keywords[hr]=Internet;WWW;preglednik;Web; -Keywords[hu]=Internet;WWW;Böngésző;Web;Háló;Net;Explorer; -Keywords[it]=Internet;WWW;Browser;Web;Navigatore; -Keywords[is]=Internet;WWW;Vafri;Vefur;Netvafri;Flakk; -Keywords[ja]=Internet;WWW;Web;インターネット;ブラウザ;ウェブ;エクスプローラ; -Keywords[nb]=Internett;WWW;Nettleser;Explorer;Web;Browser;Nettside; -Keywords[nl]=Internet;WWW;Browser;Web;Explorer;Verkenner;Website;Surfen;Online; -Keywords[pt]=Internet;WWW;Browser;Web;Explorador;Navegador; -Keywords[pt_BR]=Internet;WWW;Browser;Web;Explorador;Navegador; -Keywords[ru]=Internet;WWW;Browser;Web;Explorer;интернет;браузер;веб;файрфокс;огнелис; -Keywords[sk]=Internet;WWW;Prehliadač;Web;Explorer; -Keywords[sl]=Internet;WWW;Browser;Web;Explorer;Brskalnik;Splet; -Keywords[tr]=İnternet;WWW;Tarayıcı;Web;Gezgin;Web sitesi;Site;sörf;çevrimiçi;tara; -Keywords[uk]=Internet;WWW;Browser;Web;Explorer;Інтернет;мережа;переглядач;оглядач;браузер;веб;файрфокс;вогнелис;перегляд; -Keywords[vi]=Internet;WWW;Browser;Web;Explorer;Trình duyệt;Trang web; -Keywords[zh_CN]=Internet;WWW;Browser;Web;Explorer;网页;浏览;上网;火狐;IceCat;ff;互联网;网站; -Keywords[zh_TW]=Internet;WWW;Browser;Web;Explorer;網際網路;網路;瀏覽器;上網;網頁;火狐; -Exec=icecat-x11 --name icecat-x11 %u -Icon=icecat -Terminal=false -Type=Application -MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall; -Categories=Network;WebBrowser; -StartupNotify=true -Name[en_US]=GNU IceCat on X11 -Actions=new-window;new-private-window; - -[Desktop Action new-window] -Name=Open a New Window -Name[ach]=Dirica manyen -Name[af]=Nuwe venster -Name[an]=Nueva finestra -Name[ar]=نافذة جديدة -Name[as]=নতুন উইন্ডো -Name[ast]=Ventana nueva -Name[az]=Yeni Pəncərə -Name[be]=Новае акно -Name[bg]=Нов прозорец -Name[bn-BD]=নতুন উইন্ডো (N) -Name[bn-IN]=নতুন উইন্ডো -Name[br]=Prenestr nevez -Name[brx]=गोदान उइन्ड'(N) -Name[bs]=Novi prozor -Name[ca]=Finestra nova -Name[cak]=K'ak'a' tzuwäch -Name[cs]=Nové okno -Name[cy]=Ffenestr Newydd -Name[da]=Nyt vindue -Name[de]=­Neues Fenster -Name[dsb]=Nowe wokno -Name[el]=Νέο παράθυρο -Name[en-GB]=New Window -Name[en-US]=New Window -Name[en-ZA]=New Window -Name[eo]=Nova fenestro -Name[es-AR]=Nueva ventana -Name[es-CL]=Nueva ventana -Name[es-ES]=Nueva ventana -Name[es-MX]=Nueva ventana -Name[et]=Uus aken -Name[eu]=Leiho berria -Name[fa]=پنجره جدید‌ -Name[ff]=Henorde Hesere -Name[fi]=Uusi ikkuna -Name[fr]=­Nouvelle fenêtre -Name[fy-NL]=Nij finster -Name[ga-IE]=Fuinneog Nua -Name[gd]=Uinneag ùr -Name[gl]=Nova xanela -Name[gn]=Ovetã pyahu -Name[gu-IN]=નવી વિન્ડો -Name[he]=חלון חדש -Name[hi-IN]=नया विंडो -Name[hr]=Novi prozor -Name[hsb]=Nowe wokno -Name[hu]=Új ablak -Name[hy-AM]=Նոր Պատուհան -Name[id]=Jendela Baru -Name[is]=Nýr gluggi -Name[it]=Nuova finestra­ -Name[ja]=新しいウィンドウ -Name[ja-JP-mac]=新規ウインドウ -Name[ka]=ახალი ფანჯარა -Name[kk]=Жаңа терезе -Name[km]=បង្អួច​​​ថ្មី -Name[kn]=ಹೊಸ ಕಿಟಕಿ -Name[ko]=새 창 -Name[kok]=नवें जनेल -Name[ks]=نئئ وِنڈو -Name[lij]=Neuvo barcon -Name[lo]=ຫນ້າຕ່າງໃຫມ່ -Name[lt]=Naujas langas -Name[ltg]=Jauns lūgs -Name[lv]=Jauns logs -Name[mai]=नव विंडो -Name[mk]=Нов прозорец -Name[ml]=പുതിയ ജാലകം -Name[mr]=नवीन पटल -Name[ms]=Tetingkap Baru -Name[my]=ဝင်းဒိုးအသစ် -Name[nb-NO]=Nytt vindu -Name[ne-NP]=नयाँ सञ्झ्याल -Name[nl]=Nieuw venster -Name[nn-NO]=Nytt vindauge -Name[or]=ନୂତନ ୱିଣ୍ଡୋ -Name[pa-IN]=ਨਵੀਂ ਵਿੰਡੋ -Name[pl]=Nowe okno -Name[pt-BR]=Nova janela -Name[pt-PT]=Nova janela -Name[rm]=Nova fanestra -Name[ro]=Fereastră nouă -Name[ru]=Новое окно -Name[sat]=नावा विंडो (N) -Name[si]=නව කවුළුවක් -Name[sk]=Nové okno -Name[sl]=Novo okno -Name[son]=Zanfun taaga -Name[sq]=Dritare e Re -Name[sr]=Нови прозор -Name[sv-SE]=Nytt fönster -Name[ta]=புதிய சாளரம் -Name[te]=కొత్త విండో -Name[th]=หน้าต่างใหม่ -Name[tr]=Yeni pencere -Name[tsz]=Eraatarakua jimpani -Name[uk]=Нове вікно -Name[ur]=نیا دریچہ -Name[uz]=Yangi oyna -Name[vi]=Cửa sổ mới -Name[wo]=Palanteer bu bees -Name[xh]=Ifestile entsha -Name[zh-CN]=新建窗口 -Name[zh-TW]=開新視窗 -Exec=icecat-x11 --name icecat-x11 --new-window %u - -[Desktop Action new-private-window] -Name=Open a New Private Window -Name[ach]=Dirica manyen me mung -Name[af]=Nuwe privaatvenster -Name[an]=Nueva finestra privada -Name[ar]=نافذة خاصة جديدة -Name[as]=নতুন ব্যক্তিগত উইন্ডো -Name[ast]=Ventana privada nueva -Name[az]=Yeni Məxfi Pəncərə -Name[be]=Новае акно адасаблення -Name[bg]=Нов прозорец за поверително сърфиране -Name[bn-BD]=নতুন ব্যক্তিগত উইন্ডো -Name[bn-IN]=নতুন ব্যক্তিগত উইন্ডো -Name[br]=Prenestr merdeiñ prevez nevez -Name[brx]=गोदान प्राइभेट उइन्ड' -Name[bs]=Novi privatni prozor -Name[ca]=Finestra privada nova -Name[cak]=K'ak'a' ichinan tzuwäch -Name[cs]=Nové anonymní okno -Name[cy]=Ffenestr Breifat Newydd -Name[da]=Nyt privat vindue -Name[de]=Neues privates Fenster -Name[dsb]=Nowe priwatne wokno -Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης -Name[en-GB]=New Private Window -Name[en-US]=New Private Window -Name[en-ZA]=New Private Window -Name[eo]=Nova privata fenestro -Name[es-AR]=Nueva ventana privada -Name[es-CL]=Nueva ventana privada -Name[es-ES]=Nueva ventana privada -Name[es-MX]=Nueva ventana privada -Name[et]=Uus privaatne aken -Name[eu]=Leiho pribatu berria -Name[fa]=پنجره ناشناس جدید -Name[ff]=Henorde Suturo Hesere -Name[fi]=Uusi yksityinen ikkuna -Name[fr]=Nouvelle fenêtre de navigation privée -Name[fy-NL]=Nij priveefinster -Name[ga-IE]=Fuinneog Nua Phríobháideach -Name[gd]=Uinneag phrìobhaideach ùr -Name[gl]=Nova xanela privada -Name[gn]=Ovetã ñemi pyahu -Name[gu-IN]=નવી ખાનગી વિન્ડો -Name[he]=חלון פרטי חדש -Name[hi-IN]=नयी निजी विंडो -Name[hr]=Novi privatni prozor -Name[hsb]=Nowe priwatne wokno -Name[hu]=Új privát ablak -Name[hy-AM]=Սկսել Գաղտնի դիտարկում -Name[id]=Jendela Mode Pribadi Baru -Name[is]=Nýr huliðsgluggi -Name[it]=Nuova finestra anonima -Name[ja]=新しいプライベートウィンドウ -Name[ja-JP-mac]=新規プライベートウインドウ -Name[ka]=ახალი პირადი ფანჯარა -Name[kk]=Жаңа жекелік терезе -Name[km]=បង្អួច​ឯកជន​ថ្មី -Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ -Name[ko]=새 사생활 보호 모드 -Name[kok]=नवो खाजगी विंडो -Name[ks]=نْو پرایوٹ وینڈو& -Name[lij]=Neuvo barcon privou -Name[lo]=ເປີດຫນ້າຕ່າງສວນຕົວຂື້ນມາໃຫມ່ -Name[lt]=Naujas privataus naršymo langas -Name[ltg]=Jauns privatais lūgs -Name[lv]=Jauns privātais logs -Name[mai]=नया निज विंडो (W) -Name[mk]=Нов приватен прозорец -Name[ml]=പുതിയ സ്വകാര്യ ജാലകം -Name[mr]=नवीन वैयक्तिक पटल -Name[ms]=Tetingkap Persendirian Baharu -Name[my]=New Private Window -Name[nb-NO]=Nytt privat vindu -Name[ne-NP]=नयाँ निजी सञ्झ्याल -Name[nl]=Nieuw privévenster -Name[nn-NO]=Nytt privat vindauge -Name[or]=ନୂତନ ବ୍ୟକ୍ତିଗତ ୱିଣ୍ଡୋ -Name[pa-IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ -Name[pl]=Nowe okno prywatne -Name[pt-BR]=Nova janela privativa -Name[pt-PT]=Nova janela privada -Name[rm]=Nova fanestra privata -Name[ro]=Fereastră privată nouă -Name[ru]=Новое приватное окно -Name[sat]=नावा निजेराक् विंडो (W ) -Name[si]=නව පුද්ගලික කවුළුව (W) -Name[sk]=Nové okno v režime Súkromné prehliadanie -Name[sl]=Novo zasebno okno -Name[son]=Sutura zanfun taaga -Name[sq]=Dritare e Re Private -Name[sr]=Нови приватан прозор -Name[sv-SE]=Nytt privat fönster -Name[ta]=புதிய தனிப்பட்ட சாளரம் -Name[te]=కొత్త ఆంతరంగిక విండో -Name[th]=หน้าต่างส่วนตัวใหม่ -Name[tr]=Yeni gizli pencere -Name[tsz]=Juchiiti eraatarakua jimpani -Name[uk]=Приватне вікно -Name[ur]=نیا نجی دریچہ -Name[uz]=Yangi maxfiy oyna -Name[vi]=Cửa sổ riêng tư mới -Name[wo]=Panlanteeru biir bu bees -Name[xh]=Ifestile yangasese entsha -Name[zh-CN]=新建隐私浏览窗口 -Name[zh-TW]=新增隱私視窗 -Exec=icecat-x11 --name icecat-x11 --private-window %u diff --git a/icecat-x11.sh.in b/icecat-x11.sh.in deleted file mode 100644 index e80fad2..0000000 --- a/icecat-x11.sh.in +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -# -# Run GNU IceCat on X11 backend -# - -export MOZ_DISABLE_WAYLAND=1 -exec /__PREFIX__/bin/icecat "$@" diff --git a/icecat.sh.in b/icecat.sh.in index f74bd16..a269749 100644 --- a/icecat.sh.in +++ b/icecat.sh.in @@ -64,7 +64,7 @@ MOZ_DIST_BIN="$MOZ_LIB_DIR/icecat" MOZ_LANGPACKS_DIR="$MOZ_DIST_BIN/langpacks" MOZ_EXTENSIONS_PROFILE_DIR="$HOME/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}" MOZ_PROGRAM="$MOZ_DIST_BIN/$MOZ_FIREFOX_FILE" -MOZ_LAUNCHER="$MOZ_DIST_BIN/run-icecat.sh" +MOZ_LAUNCHER="$MOZ_DIST_BIN/icecat" GETENFORCE_FILE="/usr/sbin/getenforce" ## @@ -269,13 +269,11 @@ do ;; esac done - -# Run the browser -debugging=0 -if [ $debugging = 1 ] -then - echo $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@" -fi + +## Allow downgrade because during distro upgrade the build time can be +## older in newer version than the previous one. +## +export MOZ_ALLOW_DOWNGRADE=1 -exec $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@" +exec $MOZ_PROGRAM "$@" diff --git a/icecat.spec b/icecat.spec index acd76d9..6e50c61 100644 --- a/icecat.spec +++ b/icecat.spec @@ -2,21 +2,14 @@ # Set to true if it's going to be submitted as update %global release_build 1 -# Set new source-code build version -# This tag indicates a new rebuild for Fedora +# Set new source-code build version for Fedora and, not necessarily, for upstream too %global redhat_ver rh1 -# Exclude ARM for the following error: -# terminate called after throwing an instance of 'std::bad_alloc' -# what(): std::bad_alloc -# error: could not compile `gkrust` -ExcludeArch: %{arm} +ExcludeArch: %{ix86} %{arm} -# Build is failing because of -# include/mozilla/FloatingPoint.h:212:31: error: inlining failed in call to ‘always_inline’ ‘bool mozilla::IsNegativeZero(T) [with T = double]’: indirect function call with a yet undetermined callee -%if 0%{?fedora} -ExcludeArch: s390x -%endif +# Bundled cbindgen makes build slow. +# Enable only if system cbindgen is not available. +%global use_bundled_cbindgen 0 #################### @@ -27,45 +20,40 @@ ExcludeArch: s390x # Downgrade optimization %global less_optbuild 0 -# Use mozilla hardening option? -%global hardened_build 1 -#################### - -# Build PGO+LTO on x86_64 and aarch64 only due to build issues -# on other arches. -%ifarch x86_64 +# Build PGO+LTO on x86_64 and aarch64 only +%ifarch x86_64 %{arm64} %if 0%{?release_build} -%global build_with_pgo 0 -%global pgo_wayland 0 +%global build_with_pgo 1 +%global pgo_wayland 1 +%global launch_wayland_compositor 1 %else %global build_with_pgo 0 -%endif -%endif - +%global pgo_wayland 0 %global launch_wayland_compositor 0 -%if 0%{?build_with_pgo} -%global launch_wayland_compositor 1 +%endif %endif -# Disable LTO to work around rhbz#1883904 -%define _lto_cflags %{nil} #################### # Active/Deactive language files handling -%global build_langpacks 1 +%bcond_without langpacks + +%if %{with langpacks} +%bcond_without langpacks_subpkg +%endif # Define installation directories %global icecatappdir %{_libdir}/%{name} -%global icecat_ver %{name}-%{version} -%global icecat_devel %{name}-devel-%{version} - # Define language files directory %global langpackdir %{icecatappdir}/langpacks +%global icecat_ver %{name}-%{version} +%global icecat_devel %{name}-devel-%{version} + %global toolkit_gtk3 1 # Big endian platforms -%ifarch ppc64 s390x +%ifarch s390x %{power64} # Javascript Intl API is not supported on big endian platforms right now: # https://bugzilla.mozilla.org/show_bug.cgi?id=1322212 %global big_endian 1 @@ -79,7 +67,7 @@ ExcludeArch: s390x %if %{?system_nss} %global nspr_version 4.32 %global nspr_build_version %{nspr_version} -%global nss_version 3.88 +%global nss_version 3.100 %global nss_build_version %{nss_version} %endif @@ -92,13 +80,12 @@ ExcludeArch: s390x %global libvpx_version 1.8.2 %endif -%global disable_elfhack 1 - -# cbingen -%global use_bundled_cbindgen 1 - # Use clang? -%global build_with_clang 0 +%bcond_without toolchain_clang + +%if %{with toolchain_clang} +%global toolchain clang +%endif # https://bugzilla.redhat.com/show_bug.cgi?id=1908792 # https://bugzilla.redhat.com/show_bug.cgi?id=2255254 @@ -106,17 +93,17 @@ ExcludeArch: s390x %global __requires_exclude ^(%%(find %{buildroot}%{icecatappdir} -name '*.so' | xargs -n1 basename | sort -u | paste -s -d '|' -)) Name: icecat -Epoch: 2 -Version: 115.8.0 +Epoch: 4 +Version: 140.7.0 Release: %autorelease -e %{redhat_ver} Summary: GNU version of Firefox browser # Tri-licensing scheme for Gnuzilla/IceCat in parentheses, and licenses for the extensions included -License: (MPL-1.1 OR GPL-2.0-or-later OR LGPL-2.1-or-later) AND GPL-3.0-or-later AND MIT AND BSD AND ISC AND Apache-2.0 AND MPL-2.0 -URL: http://www.gnu.org/software/gnuzilla/ +License: (MPL-1.1 OR GPL-2.0-or-later OR LGPL-2.1-or-later) AND GPL-3.0-or-later AND MIT AND BSD-4-Clause-UC AND ISC AND Apache-2.0 AND MPL-2.0 +URL: http://www.gnu.org/software/gnuzilla/ ## Source archive created by scripts based on Gnuzilla files. -## Modified files are hosted in a dedicated fork repository: +## All modified files are hosted in a dedicated fork repository: ## https://gitlab.com/anto.trande/icecat Source0: %{name}-%{version}-%{redhat_ver}.tar.bz2 @@ -124,7 +111,7 @@ Source2: %{name}.png Source3: %{name}-mozconfig-common # Language files downloaded by source7 script -%if 0%{?build_langpacks} +%if %{with langpacks} Source4: %{name}-%{version}-langpacks.tar.gz %endif @@ -137,64 +124,27 @@ Source5: %{name}-COPYING-licensefiles.tar.gz Source7: %{name}-lang_download.sh # Desktop files -Source9: %{name}-wayland.desktop Source10: %{name}.appdata.xml -Source12: %{name}-wayland.sh.in Source13: %{name}.sh.in Source14: %{name}.desktop -Source15: %{name}-x11.sh.in -Source16: %{name}-x11.desktop # cbingen Source17: cbindgen-vendor.tar.xz Source18: node-stdout-nonblocking-wrapper - Source19: run-wayland-compositor -# Build patches -# Fixes installation of those addons which don't have ID on IceCat ("Cannot find id for addon" error). -Patch1: %{name}-fix_addon_installation.patch -Patch2: %{name}-commasplit.patch -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 -Patch600: %{name}-pgo.patch -Patch602: mozilla-1516803.patch +Patch603: %{name}-gcc-always-inline.patch BuildRequires: alsa-lib-devel BuildRequires: autoconf213 @@ -254,10 +204,12 @@ BuildRequires: nss-static >= %{nss_version} %endif BuildRequires: pango-devel +BuildRequires: pciutils-libs BuildRequires: pipewire-devel BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3.11-devel +BuildRequires: python3-orjson BuildRequires: perl-interpreter BuildRequires: pkgconfig(xrender) BuildRequires: pkgconfig(libstartup-notification-1.0) @@ -266,25 +218,36 @@ BuildRequires: pkgconfig(libcurl) %if %{with pulseaudio} BuildRequires: pulseaudio-libs-devel %endif -BuildRequires: yasm BuildRequires: llvm -BuildRequires: llvm-devel -BuildRequires: clang -BuildRequires: clang-libs -BuildRequires: clang-devel -%if 0%{?build_with_clang} -BuildRequires: lld +%if 0%{?fedora} >= 42 || 0%{?rhel} >= 10 +BuildRequires: clang19 +BuildRequires: clang19-libs +BuildRequires: llvm19-devel +BuildRequires: compiler-rt19 +%global llvm_suffix -19 +%else +BuildRequires: clang17 +BuildRequires: clang17-libs +BuildRequires: llvm17-devel +BuildRequires: compiler-rt17 +%global llvm_suffix -17 +%endif +%if "%toolchain" == "clang" +BuildRequires: lld %endif BuildRequires: rust +BuildRequires: rustfmt + %if 0%{?pgo_wayland} +BuildRequires: xorg-x11-server-Xvfb BuildRequires: mutter BuildRequires: gsettings-desktop-schemas BuildRequires: gnome-settings-daemon BuildRequires: mesa-dri-drivers +BuildRequires: mesa-libEGL BuildRequires: xorg-x11-server-Xwayland -%endif -%if 0%{?build_with_pgo} -BuildRequires: xorg-x11-server-Xvfb +BuildRequires: dbus-x11 +BuildRequires: gnome-keyring %endif %if 0%{?big_endian} @@ -333,20 +296,16 @@ Extensions included to this version of IceCat: requested. This implies not downloading feeds, updates, blacklists or any other similar data needed during startup. -%package x11 -Summary: GNU IceCat X11 launcher -Requires: %{name}%{?_isa} -%description x11 -The %{name}-x11 package contains launcher and desktop file -to run GNU IceCat native on X11. - -%package wayland -Summary: GNU IceCat Wayland launcher -Requires: %{name}%{?_isa} -Obsoletes: %{name} < 0:78.6.1-1 -%description wayland -The icecat-wayland package contains launcher and desktop file -to run GNU IceCat native on Wayland. +%if %{with langpacks_subpkg} +%package langpacks +Summary: IceCat langpacks +Requires: %{name} = 4:%{version}-%{release} +%description langpacks +The icecat-langpacks package contains all the localization +and translations langpack add-ons. +%files langpacks -f %{name}.lang +%dir %{langpackdir} +%endif %prep %autosetup -N -n %{name}-%{version} @@ -354,47 +313,21 @@ to run GNU IceCat native on Wayland. # Copy license files tar -xf %{SOURCE5} -%patch -P 1 -p 1 -b .fix_addon_installation -%patch -P 2 -p 1 -b .commasplit -%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 -# ARM run-time patch -%ifarch aarch64 -%patch -P 40 -p 1 -b .aarch64-skia +# ARM64 +%ifarch %{arm64} %patch -P 226 -p 1 -b .1354671 %endif -%ifarch %{arm} -%patch -P 44 -p 1 -b .build-arm-libopus -%endif - -%patch -P 402 -p 1 -b .1196777 %ifarch %{power64} %patch -P 423 -p 1 -b .1512162 %endif - -%patch -P 54 -p 1 -b .1669639 - -# PGO patches -%if 0%{?build_with_pgo} -%if !%{build_with_clang} -%patch -P 600 -p 1 -b .pgo -%patch -P 602 -p 1 -b .1516803 -%endif -%endif +%patch -P 603 -p1 -b .inline # Remove default configuration and copy the customized one rm -f .mozconfig @@ -411,7 +344,7 @@ echo "ac_add_options --disable-webrtc" >> .mozconfig # Hide DRM Content option # This option does not work on other architectures -%ifarch x86_64 %{ix86} +%ifarch x86_64 echo "ac_add_options --disable-eme" >> .mozconfig %endif @@ -447,16 +380,7 @@ echo "ac_add_options --without-system-libvpx" >> .mozconfig echo "ac_add_options --with-system-jpeg" >> .mozconfig echo "ac_add_options --enable-ffmpeg" >> .mozconfig - -# This option works on these architectures only -%ifarch %{arm} -echo "ac_add_options --disable-elf-hack" >> .mozconfig -echo "ac_add_options --disable-av1" >> .mozconfig -echo 'export NEON_FLAGS=-mfpu=vfpv3-d16' >> .mozconfig -%endif -%ifnarch %{arm} echo "ac_add_options --enable-av1" >> .mozconfig -%endif %if 0%{?debug_build} echo "ac_add_options --enable-debug" >> .mozconfig @@ -464,10 +388,6 @@ echo "ac_add_options --disable-optimize" >> .mozconfig echo "ac_add_options --enable-rust-debug" >> .mozconfig %else %global optimize_flags "none" -%ifarch %{arm} s390x -# ARMv7 need that (rhbz#1426850) -%define optimize_flags " -fno-schedule-insns" -%endif %if %{?optimize_flags} != "none" echo 'ac_add_options --enable-optimize=%{?optimize_flags}' >> .mozconfig %else @@ -481,14 +401,15 @@ echo "ac_add_options --disable-tests" >> .mozconfig echo "ac_add_options --disable-crashreporter" >> .mozconfig # Localization -%if 0%{?build_langpacks} +%if %{with langpacks} echo "ac_add_options --with-l10n-base=$PWD/l10n" >> .mozconfig %endif -# Clang -echo "ac_add_options --with-libclang-path=%{_libdir}" >> .mozconfig +%if "%toolchain" == "clang" +echo "ac_add_options --with-libclang-path=`llvm-config%{?llvm_suffix} --libdir`" >> .mozconfig +%endif -%ifarch s390x +%ifarch s390x %{arm64} echo "ac_add_options --disable-jit" >> .mozconfig %endif @@ -515,7 +436,6 @@ find extensions/gnu -name cose.manifest -delete %build # cbindgen %if 0%{?use_bundled_cbindgen} - mkdir -p my_rust_vendor cd my_rust_vendor %{__tar} xf %{SOURCE17} @@ -529,8 +449,15 @@ replace-with = "vendored-sources" directory = "`pwd`/my_rust_vendor" EOL +# note: if you need to support cargo 1.38 or earlier, you can symlink `config` to `config.toml` +pushd .cargo +mv config config.toml +popd + env CARGO_HOME=.cargo cargo install cbindgen export PATH=`pwd`/.cargo/bin:$PATH +%else +export CBINDGEN=/usr/bin/cbindgen %endif mkdir %{_buildrootdir}/bin || : @@ -555,11 +482,6 @@ MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-O2/-O0/') # Workaround for mozbz#1531309 MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-Werror=format-security//') -# Use hardened build? -%if %{?hardened_build} -MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fPIC -Wl,-z,relro -Wl,-z,now" -%endif - %ifarch s390x MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g1/') # If MOZ_DEBUG_FLAGS is empty, firefox's build will default it to "-g" which @@ -568,114 +490,80 @@ MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g1/') export MOZ_DEBUG_FLAGS=" " %endif -%ifarch %{arm} %{ix86} -MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g0/') -# If MOZ_DEBUG_FLAGS is empty, firefox's build will default it to "-g" which -# overrides the -g1 from line above and breaks building on s390 -# (OOM when linking, rhbz#1238225) -export MOZ_DEBUG_FLAGS=" " -%endif - -# We don't wantfirefox to use CK_GCM_PARAMS_V3 in nss +# We don't want firefox to use CK_GCM_PARAMS_V3 in nss MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -DNSS_PKCS11_3_0_STRICT" -%if !0%{?build_with_clang} -%ifarch s390x %{power64} aarch64 %{ix86} -MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads -Wl,--print-memory-usage" -%endif -%ifarch %{arm} -MOZ_LINK_FLAGS="-Wl,--no-keep-memory" -echo "ac_add_options --enable-linker=gold" >> .mozconfig +%if "%toolchain" != "clang" +%ifarch s390x %{power64} %{arm64} +MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads" %endif %endif -%ifarch %{arm} %{ix86} s390x + +%ifarch s390x export RUSTFLAGS="-Cdebuginfo=0" %endif -%ifarch %{arm} -# disable hard-coded LTO due to RAM constraints -sed -i '/cargo_rustc_flags += -Clto/d' config/makefiles/rust.mk -sed -i '/RUSTFLAGS += -Cembed-bitcode=yes/d' config/makefiles/rust.mk -sed -i 's/codegen-units=1/codegen-units=16/' config/makefiles/rust.mk - -# make sure "-g0" is the last flag so there's no debug info -MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -g0" -%endif - -export CFLAGS=$MOZ_OPT_FLAGS -export CXXFLAGS="$MOZ_OPT_FLAGS -fpermissive" -export LDFLAGS=$MOZ_LINK_FLAGS +# error "STL code can only be used with -fno-exceptions" +CXXFLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-fexceptions/-fno-exceptions/') +export CXXFLAGS="$CXXFLAGS" +export CXXFLAGS="$CXXFLAGS -fpermissive -std=gnu++17" +export CFLAGS="$MOZ_OPT_FLAGS -std=gnu17" +export LDFLAGS="%{__global_ldflags} $MOZ_LINK_FLAGS -L%{_libdir} -L%{icecatappdir}" export PREFIX='%{_prefix}' export LIBDIR='%{_libdir}' -export PKG_CONFIG='%{_bindir}/pkg-config' +export PKG_CONFIG="`which pkg-config`" export PYTHON='%{__python3}' -%if 0%{?build_with_clang} -export LLVM_PROFDATA="llvm-profdata" -export AR="llvm-ar" -export NM="llvm-nm" -export RANLIB="llvm-ranlib" +%if "%toolchain" == "clang" +echo "export LLVM_PROFDATA=\"llvm-profdata\"" >> .mozconfig +echo "export AR=\"llvm-ar\"" >> .mozconfig +echo "export NM=\"llvm-nm\"" >> .mozconfig +echo "export RANLIB=\"llvm-ranlib\"" >> .mozconfig echo "ac_add_options --enable-linker=lld" >> .mozconfig +echo "export CC=clang%{?llvm_suffix}" >> .mozconfig +echo "export CXX=clang++%{?llvm_suffix}" >> .mozconfig %else -export CC=gcc -export CXX=g++ -export AR="gcc-ar" -export NM="gcc-nm" -export RANLIB="gcc-ranlib" +echo "export CC=gcc" >> .mozconfig +echo "export CXX=g++" >> .mozconfig +echo "export AR=\"gcc-ar\"" >> .mozconfig +echo "export NM=\"gcc-nm\"" >> .mozconfig +echo "export RANLIB=\"gcc-ranlib\"" >> .mozconfig %endif + +%if 0%{?build_with_pgo} +echo "ac_add_options MOZ_PGO=1" >> .mozconfig +# PGO build doesn't work with ccache export CCACHE_DISABLE=1 +%endif +# Require 4 GB of RAM per CPU core +%global _smp_tasksize_proc 4096 %if %{?less_optbuild} -MOZ_SMP_FLAGS=-j1 +echo "mk_add_options MOZ_MAKE_FLAGS=\"-j1\"" >> .mozconfig %else -MOZ_SMP_FLAGS=-j1 -# On x86_64 architectures, Mozilla can build up to 4 jobs at once in parallel, -# however builds tend to fail on other arches when building in parallel. -%ifarch %{ix86} s390x %{arm} aarch64 -[ -z "$RPM_BUILD_NCPUS" ] && \ - RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`" -[ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2 -%endif -%ifarch x86_64 ppc ppc64 ppc64le -[ -z "$RPM_BUILD_NCPUS" ] && \ - RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`" -[ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2 -[ "$RPM_BUILD_NCPUS" -ge 4 ] && MOZ_SMP_FLAGS=-j4 -[ "$RPM_BUILD_NCPUS" -ge 8 ] && MOZ_SMP_FLAGS=-j8 -[ "$RPM_BUILD_NCPUS" -ge 16 ] && MOZ_SMP_FLAGS=-j16 -[ "$RPM_BUILD_NCPUS" -ge 24 ] && MOZ_SMP_FLAGS=-j24 -[ "$RPM_BUILD_NCPUS" -ge 32 ] && MOZ_SMP_FLAGS=-j32 -[ "$RPM_BUILD_NCPUS" -ge 64 ] && MOZ_SMP_FLAGS=-j64 -%endif +echo "mk_add_options MOZ_MAKE_FLAGS=\"-j%{_smp_build_ncpus}\"" >> .mozconfig %endif -echo "mk_add_options MOZ_MAKE_FLAGS=\"$MOZ_SMP_FLAGS\"" >> .mozconfig echo "mk_add_options MOZ_SERVICES_SYNC=1" >> .mozconfig echo "export STRIP=/bin/true" >> .mozconfig %if 0%{?launch_wayland_compositor} cp -p %{SOURCE19} . -. ./run-wayland-compositor +. ./run-wayland-compositor %endif %if %{?debug_build} export CARGO_PROFILE_RELEASE_BUILD_OVERRIDE_DEBUG=true %endif - -export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system #Use python 3.11 for mach sed -i -e 's|#!/usr/bin/env python3|#!/usr/bin/env python3.11|' mach -%if 0%{?build_with_pgo} -%if 0%{?pgo_wayland} -env | grep "WAYLAND" -MOZ_ENABLE_WAYLAND=1 ./mach build -v 2>&1 | cat - && exit 1 -%else -xvfb-run ./mach build 2>&1 | cat - || exit 1 -%endif -%else + ./mach build -v 2>&1 | cat - || exit 1 + +%if 0%{?build_with_pgo} +kill $MUTTER_PID %endif %install @@ -700,24 +588,11 @@ desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE14} rm -rf %{buildroot}%{_bindir}/%{name} %{__sed} -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE13} > %{buildroot}%{_bindir}/%{name} chmod 755 %{buildroot}%{_bindir}/%{name} - -%{__sed} -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE15} > %{buildroot}%{_bindir}/%{name}-x11 -chmod 755 %{buildroot}%{_bindir}/%{name}-x11 -desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE16} - -%{__sed} -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE12} > %{buildroot}%{_bindir}/%{name}-wayland -chmod 755 %{buildroot}%{_bindir}/%{name}-wayland -desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE9} - # -# Install man page -#mkdir -p %%{buildroot}%%{_mandir}/man1 -#install -p -m 644 %%{name}.1 %%{buildroot}%%{_mandir}/man1/ - ##Extract langpacks, make any mods needed, repack the langpack, and install it. -%if 0%{?build_langpacks} echo > %{name}.lang +%if %{with langpacks} mkdir -p %{buildroot}%{langpackdir} tar xf %{SOURCE4} for langpack in `ls langpacks/*.xpi`; do @@ -778,9 +653,6 @@ ln -sf %{icecatappdir}/%{name}-bin ${RPM_BUILD_ROOT}%{icecatappdir}/%{name} rm -rf ${RPM_BUILD_ROOT}%{icecatappdir}/dictionaries ln -s %{_datadir}/hunspell ${RPM_BUILD_ROOT}%{icecatappdir}/dictionaries -# Copy over run-icecat.sh -cp -p build/unix/run-%{name}.sh %{buildroot}%{icecatappdir}/ - # Remove unused directories rm -rf %{buildroot}%{_libdir}/%{icecat_devel} rm -rf %{buildroot}%{_datadir}/idl/%{icecat_ver} @@ -816,10 +688,11 @@ end appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.appdata.xml desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop -%if 0%{?build_langpacks} -%files -f %{name}.lang -%else +%if %{with langpacks_subpkg} %files +%dir %{langpackdir} +%else +%files -f %{name}.lang %endif %doc README.* AUTHORS %license LICENSE COPYING-* @@ -838,22 +711,12 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop %{icecatappdir}/*.so %{icecatappdir}/*.ini %{icecatappdir}/omni.ja -%{icecatappdir}/run-icecat.sh %{icecatappdir}/dependentlibs.list -%{icecatappdir}/plugin-container %{icecatappdir}/pingsender %{icecatappdir}/gmp-clearkey/ -%if 0%{?build_langpacks} -%dir %{langpackdir} +%ifarch %{arm64} riscv64 +%{icecatappdir}/v4l2test %endif -%files x11 -%{_bindir}/%{name}-x11 -%{_datadir}/applications/%{name}-x11.desktop - -%files wayland -%{_bindir}/%{name}-wayland -%{_datadir}/applications/%{name}-wayland.desktop - %changelog %autochangelog diff --git a/mozilla-1196777.patch b/mozilla-1196777.patch deleted file mode 100644 index 3cc90e4..0000000 --- a/mozilla-1196777.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -up firefox-100.0/widget/gtk/nsWindow.cpp.1196777 firefox-100.0/widget/gtk/nsWindow.cpp ---- firefox-100.0/widget/gtk/nsWindow.cpp.1196777 2022-05-02 11:29:06.763325015 +0200 -+++ firefox-100.0/widget/gtk/nsWindow.cpp 2022-05-02 11:30:49.100717334 +0200 -@@ -163,7 +163,8 @@ const gint kEvents = GDK_TOUCHPAD_GESTUR - GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | - GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | - GDK_SMOOTH_SCROLL_MASK | GDK_TOUCH_MASK | GDK_SCROLL_MASK | -- GDK_POINTER_MOTION_MASK | GDK_PROPERTY_CHANGE_MASK; -+ GDK_POINTER_MOTION_MASK | GDK_PROPERTY_CHANGE_MASK | -+ GDK_FOCUS_CHANGE_MASK; - - /* utility functions */ - static bool is_mouse_in_window(GdkWindow* aWindow, gdouble aMouseX, - diff --git a/mozilla-1337988.patch b/mozilla-1337988.patch deleted file mode 100644 index 8c40445..0000000 --- a/mozilla-1337988.patch +++ /dev/null @@ -1,496 +0,0 @@ -diff -up firefox-56.0/dom/plugins/base/nsJSNPRuntime.cpp.1337988 firefox-56.0/dom/plugins/base/nsJSNPRuntime.cpp ---- firefox-56.0/dom/plugins/base/nsJSNPRuntime.cpp.1337988 2017-09-14 22:15:56.000000000 +0200 -+++ firefox-56.0/dom/plugins/base/nsJSNPRuntime.cpp 2017-09-25 10:34:11.205611698 +0200 -@@ -1719,7 +1719,7 @@ NPObjWrapper_ObjectMoved(JSObject *obj, - auto entry = - static_cast(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 - 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, 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::value, - "Type T must be a public GC pointer type"); - public: -- using ElementType = T; -- - Heap() { - static_assert(sizeof(T) == sizeof(Heap), - "Heap must be binary compatible with T."); -@@ -385,8 +387,6 @@ template - class TenuredHeap : public js::HeapBase> - { - public: -- using ElementType = T; -- - TenuredHeap() : bits(0) { - static_assert(sizeof(T) == sizeof(TenuredHeap), - "TenuredHeap 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& p) : bits(0) { setPtr(p.getPtr()); } - -+ bool operator==(const TenuredHeap& other) { return bits == other.bits; } -+ bool operator!=(const TenuredHeap& other) { return bits != other.bits; } -+ - void setPtr(T newPtr) { - MOZ_ASSERT((reinterpret_cast(newPtr) & flagsMask) == 0); - if (newPtr) -@@ -470,8 +473,6 @@ class MOZ_NONHEAP_CLASS Handle : public - friend class JS::MutableHandle; - - public: -- using ElementType = T; -- - /* Creates a handle from a handle of a type convertible to T. */ - template - MOZ_IMPLICIT Handle(Handle handle, -@@ -533,6 +534,7 @@ class MOZ_NONHEAP_CLASS Handle : public - MOZ_IMPLICIT Handle(MutableHandle& root, - typename mozilla::EnableIf::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 - class MOZ_STACK_CLASS MutableHandle : public js::MutableHandleBase> - { - public: -- using ElementType = T; -- - inline MOZ_IMPLICIT MutableHandle(Rooted* root); - inline MOZ_IMPLICIT MutableHandle(PersistentRooted* 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 - explicit Rooted(const RootingContext& cx) - : ptr(GCPolicy::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 - class MOZ_RAII FakeRooted : public RootedBase> - { - public: -- using ElementType = T; -- - template - explicit FakeRooted(CX* cx) : ptr(JS::GCPolicy::initial()) {} - - template - 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 - class FakeMutableHandle : public js::MutableHandleBase> - { - 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::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 value; - - public: -- using ElementType = JSObject*; -- - ObjectPtr() : value(nullptr) {} - - explicit ObjectPtr(JSObject* obj) : value(obj) {} -@@ -1342,177 +1336,6 @@ Swap(JS::TenuredHeap& 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 --struct DefineComparisonOps : mozilla::FalseType {}; -- --template --struct DefineComparisonOps> : mozilla::TrueType { -- static const T& get(const JS::Heap& v) { return v.unbarrieredGet(); } --}; -- --template --struct DefineComparisonOps> : mozilla::TrueType { -- static const T get(const JS::TenuredHeap& v) { return v.unbarrieredGetPtr(); } --}; -- --template <> --struct DefineComparisonOps : mozilla::TrueType { -- static const JSObject* get(const JS::ObjectPtr& v) { return v.unbarrieredGet(); } --}; -- --template --struct DefineComparisonOps> : mozilla::TrueType { -- static const T& get(const JS::Rooted& v) { return v.get(); } --}; -- --template --struct DefineComparisonOps> : mozilla::TrueType { -- static const T& get(const JS::Handle& v) { return v.get(); } --}; -- --template --struct DefineComparisonOps> : mozilla::TrueType { -- static const T& get(const JS::MutableHandle& v) { return v.get(); } --}; -- --template --struct DefineComparisonOps> : mozilla::TrueType { -- static const T& get(const JS::PersistentRooted& v) { return v.get(); } --}; -- --template --struct DefineComparisonOps> : mozilla::TrueType { -- static const T& get(const js::FakeRooted& v) { return v.get(); } --}; -- --template --struct DefineComparisonOps> : mozilla::TrueType { -- static const T& get(const js::FakeMutableHandle& 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 mozilla::EnableIf::value && -- js::detail::DefineComparisonOps::value, bool>::Type --operator==(const T& a, const U& b) { -- return js::detail::DefineComparisonOps::get(a) == js::detail::DefineComparisonOps::get(b); --} -- --template --typename mozilla::EnableIf::value && -- js::detail::DefineComparisonOps::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 mozilla::EnableIf::value, bool>::Type --operator==(const T& a, const typename T::ElementType& b) { -- return js::detail::DefineComparisonOps::get(a) == b; --} -- --template --typename mozilla::EnableIf::value, bool>::Type --operator!=(const T& a, const typename T::ElementType& b) { -- return !(a == b); --} -- --template --typename mozilla::EnableIf::value, bool>::Type --operator==(const typename T::ElementType& a, const T& b) { -- return a == js::detail::DefineComparisonOps::get(b); --} -- --template --typename mozilla::EnableIf::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 mozilla::EnableIf::value && -- mozilla::IsPointer::value, bool>::Type --operator==(const typename mozilla::RemovePointer::Type* a, const T& b) { -- return a == js::detail::DefineComparisonOps::get(b); --} -- --template --typename mozilla::EnableIf::value && -- mozilla::IsPointer::value, bool>::Type --operator!=(const typename mozilla::RemovePointer::Type* a, const T& b) { -- return !(a == b); --} -- --template --typename mozilla::EnableIf::value && -- mozilla::IsPointer::value, bool>::Type --operator==(const T& a, const typename mozilla::RemovePointer::Type* b) { -- return js::detail::DefineComparisonOps::get(a) == b; --} -- --template --typename mozilla::EnableIf::value && -- mozilla::IsPointer::value, bool>::Type --operator!=(const T& a, const typename mozilla::RemovePointer::Type* b) { -- return !(a == b); --} -- --// Case 4: For pointer wrappers, comparison between the wrapper and nullptr. -- --template --typename mozilla::EnableIf::value && -- mozilla::IsPointer::value, bool>::Type --operator==(std::nullptr_t a, const T& b) { -- return a == js::detail::DefineComparisonOps::get(b); --} -- --template --typename mozilla::EnableIf::value && -- mozilla::IsPointer::value, bool>::Type --operator!=(std::nullptr_t a, const T& b) { -- return !(a == b); --} -- --template --typename mozilla::EnableIf::value && -- mozilla::IsPointer::value, bool>::Type --operator==(const T& a, std::nullptr_t b) { -- return js::detail::DefineComparisonOps::get(a) == b; --} -- --template --typename mozilla::EnableIf::value && -- mozilla::IsPointer::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(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::isMarkable(this->value)) -- this->read(); -+ const T get() const { -+ if (!InternalBarrierMethods::isMarkable(this->value)) -+ return JS::GCPolicy::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 - - typedef ReadBarriered ReadBarrieredValue; - --namespace detail { -- --template --struct DefineComparisonOps> : mozilla::TrueType { -- static const T& get(const PreBarriered& v) { return v.get(); } --}; -- --template --struct DefineComparisonOps> : mozilla::TrueType { -- static const T& get(const GCPtr& v) { return v.get(); } --}; -- --template --struct DefineComparisonOps> : mozilla::TrueType { -- static const T& get(const HeapPtr& v) { return v.get(); } --}; -- --template --struct DefineComparisonOps> : mozilla::TrueType { -- static const T& get(const ReadBarriered& v) { return v.unbarrieredGet(); } --}; -- --template <> --struct DefineComparisonOps : 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 - class SharedMem - { -- // static_assert(mozilla::IsPointer::value, -- // "SharedMem encapsulates pointer types"); -+ static_assert(mozilla::IsPointer::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. - } - diff --git a/mozilla-1512162.patch b/mozilla-1512162.patch index 99a0b14..02e9585 100644 --- a/mozilla-1512162.patch +++ b/mozilla-1512162.patch @@ -1,7 +1,6 @@ -diff -up firefox-68.0.1/js/xpconnect/src/XPCWrappedNative.cpp.1512162 firefox-68.0.1/js/xpconnect/src/XPCWrappedNative.cpp ---- firefox-68.0.1/js/xpconnect/src/XPCWrappedNative.cpp.1512162 2019-07-17 22:51:30.000000000 +0200 -+++ firefox-68.0.1/js/xpconnect/src/XPCWrappedNative.cpp 2019-07-25 08:08:18.512528313 +0200 -@@ -1092,7 +1092,7 @@ class MOZ_STACK_CLASS CallMethodHelper f +--- a/js/xpconnect/src/XPCWrappedNative.cpp.1512162 2019-07-17 22:51:30.000000000 +0200 ++++ b/js/xpconnect/src/XPCWrappedNative.cpp 2019-07-25 08:08:18.512528313 +0200 +@@ -1055,7 +1055,7 @@ MOZ_ALWAYS_INLINE bool GetOutParamSource(uint8_t paramIndex, MutableHandleValue srcp) const; @@ -10,7 +9,7 @@ diff -up firefox-68.0.1/js/xpconnect/src/XPCWrappedNative.cpp.1512162 firefox-68 MOZ_ALWAYS_INLINE bool QueryInterfaceFastPath(); -@@ -1139,7 +1139,7 @@ class MOZ_STACK_CLASS CallMethodHelper f +@@ -1102,7 +1102,7 @@ ~CallMethodHelper(); @@ -19,25 +18,3 @@ diff -up firefox-68.0.1/js/xpconnect/src/XPCWrappedNative.cpp.1512162 firefox-68 // Trace implementation so we can put our CallMethodHelper in a Rooted. 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(); diff --git a/mozilla-1516803.patch b/mozilla-1516803.patch deleted file mode 100644 index 6c4ff59..0000000 --- a/mozilla-1516803.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/security/sandbox/linux/moz.build b/security/sandbox/linux/moz.build ---- a/security/sandbox/linux/moz.build -+++ b/security/sandbox/linux/moz.build -@@ -114,9 +114,8 @@ - # gcc lto likes to put the top level asm in syscall.cc in a different partition - # from the function using it which breaks the build. Work around that by - # forcing there to be only one partition. --for f in CONFIG["OS_CXXFLAGS"]: -- if f.startswith("-flto") and CONFIG["CC_TYPE"] != "clang": -- LDFLAGS += ["--param lto-partitions=1"] -+if CONFIG['CC_TYPE'] != 'clang': -+ LDFLAGS += ['--param', 'lto-partitions=1'] - - DEFINES["NS_NO_XPCOM"] = True - DisableStlWrapping() diff --git a/mozilla-1580174-webrtc-popup.patch b/mozilla-1580174-webrtc-popup.patch deleted file mode 100644 index 2d154eb..0000000 --- a/mozilla-1580174-webrtc-popup.patch +++ /dev/null @@ -1,51 +0,0 @@ -diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp ---- a/widget/gtk/nsWindow.cpp -+++ b/widget/gtk/nsWindow.cpp -@@ -1155,6 +1155,28 @@ - } - } - -+bool IsPopupWithoutToplevelParent(nsMenuPopupFrame* aMenuPopupFrame) { -+ // Check if the popup is autocomplete (like tags autocomplete -+ // in the bookmark edit popup). -+ nsAtom* popupId = aMenuPopupFrame->GetContent()->GetID(); -+ if (popupId && popupId->Equals(NS_LITERAL_STRING("PopupAutoComplete"))) { -+ return true; -+ } -+ -+ // Check if the popup is in popupnotificationcontent (like choosing capture -+ // device when starting webrtc session). -+ nsIFrame* parentFrame = aMenuPopupFrame->GetParent(); -+ if (!parentFrame) { -+ return false; -+ } -+ parentFrame = parentFrame->GetParent(); -+ if (parentFrame && parentFrame->GetContent()->NodeName().EqualsLiteral( -+ "popupnotificationcontent")) { -+ return true; -+ } -+ return false; -+} -+ - // Wayland keeps strong popup window hierarchy. We need to track active - // (visible) popup windows and make sure we hide popup on the same level - // before we open another one on that level. It means that every open -@@ -1211,10 +1233,14 @@ - LOG(("...[%p] GetParentMenuWidget() = %p\n", (void*)this, parentWindow)); - - // If the popup is a regular menu but GetParentMenuWidget() returns -- // nullptr which means it's connected non-menu parent -- // (bookmark toolbar for instance). -+ // nullptr which means is not a submenu of any other menu. - // In this case use a parent given at nsWindow::Create(). -- if (!parentWindow && !menuPopupFrame->IsContextMenu()) { -+ // But we have to avoid using mToplevelParentWindow in case the popup -+ // is in 'popupnotificationcontent' element or autocomplete popup, -+ // otherwise the popupnotification would disappear when for -+ // example opening a popup with microphone selection. -+ if (!parentWindow && !menuPopupFrame->IsContextMenu() && -+ !IsPopupWithoutToplevelParent(menuPopupFrame)) { - parentWindow = - get_window_for_gtk_widget(GTK_WIDGET(mToplevelParentWindow)); - } - diff --git a/mozilla-1669639.patch b/mozilla-1669639.patch deleted file mode 100644 index 3639133..0000000 --- a/mozilla-1669639.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- firefox-81.0.1/build/mach_initialize.py.old 2020-10-06 14:16:06.212974910 +0200 -+++ firefox-81.0.1/build/mach_initialize.py 2020-10-06 14:19:03.313179557 +0200 -@@ -507,7 +507,10 @@ class ImportHook(object): - # doesn't happen or because it doesn't matter). - if not os.path.exists(module.__file__[:-1]): - if os.path.exists(module.__file__): -- os.remove(module.__file__) -+ try: -+ os.remove(module.__file__) -+ except: -+ pass - del sys.modules[module.__name__] - module = self(name, globals, locals, fromlist, level) - - diff --git a/mp4parse-rust-8b5b652d38e007e736bb442ccd5aa5ed699db100.patch b/mp4parse-rust-8b5b652d38e007e736bb442ccd5aa5ed699db100.patch deleted file mode 100644 index bdad203..0000000 --- a/mp4parse-rust-8b5b652d38e007e736bb442ccd5aa5ed699db100.patch +++ /dev/null @@ -1,25 +0,0 @@ ---- thunderbird-102.11.1/third_party/rust/mp4parse/.cargo-checksum.json.mp4parse-rust-8b5b652d38e007e736bb442ccd5aa5ed699db100 2023-05-24 00:50:52.000000000 +0200 -+++ thunderbird-102.11.1/third_party/rust/mp4parse/.cargo-checksum.json 2023-06-08 15:26:57.584198289 +0200 -@@ -1 +1 @@ --{"files":{"Cargo.toml":"f283fc1597f492cd1e03cd08b9c77f042ae4494fc96b4dcb566ec0abbda65efc","LICENSE":"fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85","README.md":"86cb40854b93f988e3a63ce6fe39d2ce95367f8ca301a5ba50676ff98a0ad791","benches/avif_benchmark.rs":"cd99c0dde025ab40d2cd860f53dc697a1587a48c164c3e5c8adfd40add29d772","link-u-avif-sample-images/.github/workflows/encode-and-decode-daily.yml":"84b787f721024a100ce09ac5714a1d78a4811893861e89495313f435b9d02359","link-u-avif-sample-images/.gitignore":"ac16d40779ab2d608843a3cb1b0418a1ffdc0e71a06c4d140386fadf007a54a7","link-u-avif-sample-images/LICENSE.txt":"da89f9867822be4b8adb1e601d9e9226c195016c6508015eb7593e68ead0c98a","link-u-avif-sample-images/Makefile":"b5697e8685d2a9ce0f4b4c976a5f707022ed113782d16dc59ae280d3a8ce77b1","link-u-avif-sample-images/README.md":"d249fb7bef4f21359cfc4f2977e1b2f2c6e6dd6e57cb1cdc1da1f0edd8aa55d0","link-u-avif-sample-images/fox.jpg":"927997a90ae88ead007283bf9c1392159d0acd2e9890522146211fda2112a2d9","link-u-avif-sample-images/fox.odd-height.png":"6136247772bd1c0edd50426bca4f3485473ac25a784e5ec8777f7491598e96db","link-u-avif-sample-images/fox.odd-width.odd-height.png":"6f91dc21c137f318d0443ce28bbf3f74d5502180c254327b46e41040a33f1363","link-u-avif-sample-images/fox.odd-width.png":"a8b2328c8700c16280c5ab40a34147edac598d4d48ca101bef649e468ae1492e","link-u-avif-sample-images/fox.png":"c45bfb5780843c70a37426340020e3e7ff41d7cf1df9fec614a5cf429d078573","link-u-avif-sample-images/fox.profile0.10bpc.yuv420.avif":"811af5e96631309030a14cbc30c3bacfaa667f2e36e16a4f30434b8f5a23310c","link-u-avif-sample-images/fox.profile0.10bpc.yuv420.monochrome.avif":"e35713343e9ee04c51ab9cfdc99a0c7d126a1917cb83f5b9a23c71ed59269be2","link-u-avif-sample-images/fox.profile0.10bpc.yuv420.monochrome.odd-height.avif":"485623f7838d8f442c47348c6492765e6aafbc3d5ccd8e90efc9c812ff15e265","link-u-avif-sample-images/fox.profile0.10bpc.yuv420.monochrome.odd-width.avif":"8e75b9a8975267359d827e4cbc6877b1674aa31b87f88f222dde03263f9254df","link-u-avif-sample-images/fox.profile0.10bpc.yuv420.monochrome.odd-width.odd-height.avif":"1fff5915a332d6aaa85d668f3f338bda6fad9c6ec1f380f2c46737d536cea5de","link-u-avif-sample-images/fox.profile0.10bpc.yuv420.odd-height.avif":"cca9785f14c74d865453518c0962dabd6d1b92d2c6c5f5ac67efdbf5606acb83","link-u-avif-sample-images/fox.profile0.10bpc.yuv420.odd-width.avif":"de3399d8b56431f0ed34e2f14200f31dd54544fddbb12f39b4d55449d5660c56","link-u-avif-sample-images/fox.profile0.10bpc.yuv420.odd-width.odd-height.avif":"07507744cb76b74a3586b93fc3b273a98f998d75f7687db3e9cb3725d7b1fb9d","link-u-avif-sample-images/fox.profile0.8bpc.yuv420.avif":"cb884c82ac7b6d4fa03b1f687e9e20abc346107095473e9c1d422aaf0de14eaf","link-u-avif-sample-images/fox.profile0.8bpc.yuv420.monochrome.avif":"15d84077066c47fdbe2a7b8ed583a17017d09a033144ac1b31486d6c8f6f5c82","link-u-avif-sample-images/fox.profile0.8bpc.yuv420.monochrome.odd-height.avif":"365439d2ee2fe5229e066362c03a73a182c7f6626772ecf5345b22752d32e681","link-u-avif-sample-images/fox.profile0.8bpc.yuv420.monochrome.odd-width.avif":"c623b9943123d6c47d3300444f7255cbdfebfe2b47a670287f2baeb717fac42b","link-u-avif-sample-images/fox.profile0.8bpc.yuv420.monochrome.odd-width.odd-height.avif":"dd069f3c3c4f7589f5f7ef1d7b6a91b8cb975d32663a4a92b6d75219edd72954","link-u-avif-sample-images/fox.profile0.8bpc.yuv420.odd-height.avif":"75628450288ace3386651725411c8f0ffff7eb95f82c5307b0faa3350f09f50e","link-u-avif-sample-images/fox.profile0.8bpc.yuv420.odd-width.avif":"f91b6f455412adabc5094011362eaaa1f6a9d5740de0b8a1be42a96c16e7617f","link-u-avif-sample-images/fox.profile0.8bpc.yuv420.odd-width.odd-height.avif":"bb8695cacacaf8f2e13a739de75e5e8a9d970d68c3acdfb7d82171a9bac2f01e","link-u-avif-sample-images/fox.profile1.10bpc.yuv444.avif":"a10de8204aee73ba1786daca6390546bd7aa6b069aaa644012219a1c11246a43","link-u-avif-sample-images/fox.profile1.10bpc.yuv444.odd-height.avif":"734a5badc59a8bed19e8eb476911048ddb011ca7c9eac31b7a7ed20e0135ac2c","link-u-avif-sample-images/fox.profile1.10bpc.yuv444.odd-width.avif":"68d15d76d95f268e810dfd87bbf96d8c3197580afce2d30b50bb1f07865077f3","link-u-avif-sample-images/fox.profile1.10bpc.yuv444.odd-width.odd-height.avif":"01e469b33bacb7e07e15e23b2997907bbcf02d8fcc99885a027494d31c45547c","link-u-avif-sample-images/fox.profile1.8bpc.yuv444.avif":"a0cdc981a6b056c8af2d177a1438c332d630040dacbfd1c89bb5e3e381ba5822","link-u-avif-sample-images/fox.profile1.8bpc.yuv444.odd-height.avif":"77e0510def73213c00ebcf051cf45fa63cf27d7c69340cc145ab6d44ec77bb07","link-u-avif-sample-images/fox.profile1.8bpc.yuv444.odd-width.avif":"12787042364bd13be01830f988cb714220bde340a3329baa808df27a269b83f8","link-u-avif-sample-images/fox.profile1.8bpc.yuv444.odd-width.odd-height.avif":"fad3b6dd9cb99e6925858f69aafae3f68c861845f2c3d4a6d1c51c6161490134","link-u-avif-sample-images/fox.profile2.10bpc.yuv422.avif":"e34f3bab5df802be2d422c685824464eb5f7e182b235ca99bde11c4c34ff3ac2","link-u-avif-sample-images/fox.profile2.10bpc.yuv422.monochrome.avif":"05804752621e2fd7a9d85b01e2995a50e3efd30693efd934152560622d66e841","link-u-avif-sample-images/fox.profile2.10bpc.yuv422.monochrome.odd-height.avif":"ef041f2efa0424d3a6dcfc5f0c3f619aea0e197aaeb5a050a2d877a457513921","link-u-avif-sample-images/fox.profile2.10bpc.yuv422.monochrome.odd-width.avif":"b711b321b8a4d3a41e08f80a17c2203b839458cb6346aff6fff3f8d7699032e6","link-u-avif-sample-images/fox.profile2.10bpc.yuv422.monochrome.odd-width.odd-height.avif":"e3f40aad0ddd6c04ffacf4a754a0525986c89d519119d37655282551e3ea3a59","link-u-avif-sample-images/fox.profile2.10bpc.yuv422.odd-height.avif":"4ef74c37712b41d6e5269d939f9d52031bc10746f7c8c029db618c5935aff9a6","link-u-avif-sample-images/fox.profile2.10bpc.yuv422.odd-width.avif":"4cf6c849f4a48a639217ad9a1e0d027f4fc804d524c03e6707ec9714a252532f","link-u-avif-sample-images/fox.profile2.10bpc.yuv422.odd-width.odd-height.avif":"3d3978e8e8d07270f82a877d3535f9483b88fce93a1c4accb658b494452b1d36","link-u-avif-sample-images/fox.profile2.12bpc.yuv420.avif":"626d73272e59722084c528b27b72a0920bec462a10749b3e87036e42bf8a24e5","link-u-avif-sample-images/fox.profile2.12bpc.yuv420.monochrome.avif":"caf50c467242b3fa0b895a2af131fa0d03dd7b34989f2b1a51d25b2246c98fab","link-u-avif-sample-images/fox.profile2.12bpc.yuv420.monochrome.odd-height.avif":"1e88b92df592c02af53ff5258fa898ac8fe1d71954e9a440500ef7879b8a1c46","link-u-avif-sample-images/fox.profile2.12bpc.yuv420.monochrome.odd-width.avif":"466efdd269f3be3b1c88afc093c839e50ba5eaf6bd0c2425e157000d02a3c21a","link-u-avif-sample-images/fox.profile2.12bpc.yuv420.monochrome.odd-width.odd-height.avif":"36014509d0688cb307e0ffcdb5b4c16ff6e6c79772c7fbbeea33b4d483a1566f","link-u-avif-sample-images/fox.profile2.12bpc.yuv420.odd-height.avif":"d1786723a5d6ea1e1764b0045dc3f669fe3905ffc2913011a2b1b424d2393397","link-u-avif-sample-images/fox.profile2.12bpc.yuv420.odd-width.avif":"a2d9178cc5622e28472a735650d9c4deaec6d27d69830110911f4158f9d4a04e","link-u-avif-sample-images/fox.profile2.12bpc.yuv420.odd-width.odd-height.avif":"89a9fc7598d72251b903e0c7088ab3e7a7f316b5e02b85f8c69e51f8eb0c7e69","link-u-avif-sample-images/fox.profile2.12bpc.yuv422.avif":"51476b8471e1c0a5ebbd1e7545709495bef619cc96c02d277aad32b1deff8ea9","link-u-avif-sample-images/fox.profile2.12bpc.yuv422.monochrome.avif":"caf50c467242b3fa0b895a2af131fa0d03dd7b34989f2b1a51d25b2246c98fab","link-u-avif-sample-images/fox.profile2.12bpc.yuv422.monochrome.odd-height.avif":"1e88b92df592c02af53ff5258fa898ac8fe1d71954e9a440500ef7879b8a1c46","link-u-avif-sample-images/fox.profile2.12bpc.yuv422.monochrome.odd-width.avif":"466efdd269f3be3b1c88afc093c839e50ba5eaf6bd0c2425e157000d02a3c21a","link-u-avif-sample-images/fox.profile2.12bpc.yuv422.monochrome.odd-width.odd-height.avif":"36014509d0688cb307e0ffcdb5b4c16ff6e6c79772c7fbbeea33b4d483a1566f","link-u-avif-sample-images/fox.profile2.12bpc.yuv422.odd-height.avif":"4808960cdcd1207b29eb6ef5b4db81ae5e63c5d40ef92f7a1e8f4430e765bde4","link-u-avif-sample-images/fox.profile2.12bpc.yuv422.odd-width.avif":"71f3c73737bc04c23d93ea2c61a8a07408f604192fe53fe12c65050927dacb4e","link-u-avif-sample-images/fox.profile2.12bpc.yuv422.odd-width.odd-height.avif":"8f9649384fa09c70af0c2e9e0d94ecd17492c702e015d9d6290d3aefc57c548c","link-u-avif-sample-images/fox.profile2.12bpc.yuv444.avif":"ed96eca6ed79863eaf91e4d666e4e220b5fa4e5a6cb1696477ba901ac12f5dde","link-u-avif-sample-images/fox.profile2.12bpc.yuv444.monochrome.avif":"caf50c467242b3fa0b895a2af131fa0d03dd7b34989f2b1a51d25b2246c98fab","link-u-avif-sample-images/fox.profile2.12bpc.yuv444.monochrome.odd-height.avif":"1e88b92df592c02af53ff5258fa898ac8fe1d71954e9a440500ef7879b8a1c46","link-u-avif-sample-images/fox.profile2.12bpc.yuv444.monochrome.odd-width.avif":"466efdd269f3be3b1c88afc093c839e50ba5eaf6bd0c2425e157000d02a3c21a","link-u-avif-sample-images/fox.profile2.12bpc.yuv444.monochrome.odd-width.odd-height.avif":"36014509d0688cb307e0ffcdb5b4c16ff6e6c79772c7fbbeea33b4d483a1566f","link-u-avif-sample-images/fox.profile2.12bpc.yuv444.odd-height.avif":"c43b4c607e301e34eb953770133d89d15e77d63be8d6421a80d6212fbbbf3453","link-u-avif-sample-images/fox.profile2.12bpc.yuv444.odd-width.avif":"0e6218ce250ee7f84a621f3af73286fd4dabea19e9898d3575c20c5955aa427d","link-u-avif-sample-images/fox.profile2.12bpc.yuv444.odd-width.odd-height.avif":"9f19846d884ac7d161ac2ca15811bb22ff7f3847bc1ad5d7713971ea024631aa","link-u-avif-sample-images/fox.profile2.8bpc.yuv422.avif":"2cb363d30f83bff58ee049874b1808b37cb1d35342edf16b3ce25cb243c9ea55","link-u-avif-sample-images/fox.profile2.8bpc.yuv422.monochrome.avif":"8217b88f350c5d3812d7f863fe9d710c4c1b846b0be8df29ce6b3eb30d2b8d8f","link-u-avif-sample-images/fox.profile2.8bpc.yuv422.monochrome.odd-height.avif":"51eccd8c1368ddec9bc1f3a7631dadb00682e985fbfea66c0a2f533f6a73b67e","link-u-avif-sample-images/fox.profile2.8bpc.yuv422.monochrome.odd-width.avif":"83fe4593ab839cf296a2ccb8a146daf826d1d602f4f239cb63ee020f2cc326f6","link-u-avif-sample-images/fox.profile2.8bpc.yuv422.monochrome.odd-width.odd-height.avif":"4e63b84a980a81adde586314a94d8f834ec763749d8797c286471415b6b75647","link-u-avif-sample-images/fox.profile2.8bpc.yuv422.odd-height.avif":"efc70882aacbb533c0e833a4401949d152dceb364846442cdccca5048ad17a60","link-u-avif-sample-images/fox.profile2.8bpc.yuv422.odd-width.avif":"c07575c88ef400c1725c9260a19439e0e784da41c7db3867059019ddbdb3bebe","link-u-avif-sample-images/fox.profile2.8bpc.yuv422.odd-width.odd-height.avif":"86aee64fd7b11b9834537ea14b2eff234c062c98d32fab51ff14aba262d5b106","link-u-avif-sample-images/hato.16bpc.png":"53b550c587cd1d19a1997184e47f4a3ff2a05cedf7cb4e42a9466a6d6cb60d8d","link-u-avif-sample-images/hato.jpg":"6d4804e5e4adf36a6b138544c81b743ed7abdd9a495a43e883ec77689ca28943","link-u-avif-sample-images/hato.png":"313880f4cc51160fec522d78f1fb7f06df70fe1929a731fc86c68ecefd312277","link-u-avif-sample-images/hato.profile0.10bpc.yuv420.avif":"1e84598c94bc795c55a551bdf6f283b4eed4997bda15e5c4bb2e29d0dc70897b","link-u-avif-sample-images/hato.profile0.10bpc.yuv420.monochrome.avif":"25c19a187d10eac963bb51b3fae1ffe50f3ccbc7ad02e51948dc7467b397ce61","link-u-avif-sample-images/hato.profile0.8bpc.yuv420.avif":"07cd454de19dd638354f75d9e97aab08bc8a04dd45c4f7531cb62a1a5656c8c9","link-u-avif-sample-images/hato.profile0.8bpc.yuv420.monochrome.avif":"120a3f26f3d6cde80869fb52bdb8fdd55b443882c98070ea938575e4790982ff","link-u-avif-sample-images/hato.profile2.10bpc.yuv422.avif":"d54251d4bc023f2e53624a46cb18e56cbc45768bd1bd50394de191c2a42106e8","link-u-avif-sample-images/hato.profile2.10bpc.yuv422.monochrome.avif":"ed33dfdb5e663b3394298b6921f9b19b129e14788dead776430eee2f14780a73","link-u-avif-sample-images/hato.profile2.12bpc.yuv422.avif":"ad361ac7d94fbc6af7ef30cbd3601ff366bc360c304480387a58a4c6fecee9b6","link-u-avif-sample-images/hato.profile2.12bpc.yuv422.monochrome.avif":"e28b4cacda95750e465e205fbfcba6a6af1d8418dac649838730c555ff7d828f","link-u-avif-sample-images/hato.profile2.8bpc.yuv422.avif":"69c353c482c2eb3d3671bb55f7ccfc932e4d781c714a72116e9138ffc6f6c720","link-u-avif-sample-images/hato.profile2.8bpc.yuv422.monochrome.avif":"e7d6f7d42a8519e1482f225fe447b5642d19a54ee830529223eac114a0dec189","link-u-avif-sample-images/images.html":"9e18453dfe5b205600f158282c6896265281e3b04b2fbc332804fab1dbdb3faf","link-u-avif-sample-images/kimono.avif":"63412e0f67f37c8b6fcf0e8269a2afae0a017fa6a3a99d37d055c590b0be52d3","link-u-avif-sample-images/kimono.crop.avif":"f175dcd9c64813b759da185fa67076fb772b76059845b2aad3ddcfab257f75ad","link-u-avif-sample-images/kimono.crop.png":"0d5605bae0ec9d39aad9dc8e1a371d0327c6a224643983e3ee1f4d44cb00f19d","link-u-avif-sample-images/kimono.jpg":"a6ad58e3cea437ee0c841115ba67ae7354de7af734de50de9d0853dd4e571577","link-u-avif-sample-images/kimono.mirror-horizontal.avif":"2bbc004d91145488610158a5acdb4d706495a2b15511db20ff57bb9efd80885c","link-u-avif-sample-images/kimono.mirror-horizontal.png":"9af9e839fe6bf6342831970c20291f619570d2fc687951ae00cd81ea766f53fe","link-u-avif-sample-images/kimono.mirror-vertical.avif":"f10eb04791fcca3409868b367128649f32e6b6fffcf02484cdefa57909f6bb74","link-u-avif-sample-images/kimono.mirror-vertical.png":"4ed003c5868fd2e78c7b2dcbd54a67a0e7593dabb3ac82b1c9e5e2dbdf09b8ec","link-u-avif-sample-images/kimono.mirror-vertical.rotate270.avif":"33c36ec2274b00ac6f81c9f61e55c20cbfce1649ad27520afe635310f516ead1","link-u-avif-sample-images/kimono.mirror-vertical.rotate270.crop.avif":"90ca48f657455b8f8e4a4e1769a05af90a3e34dca11a8b3c32552daf378ee956","link-u-avif-sample-images/kimono.mirror-vertical.rotate270.png":"74b9b7ffa8955761f747a0e6e81d5b7ecb5e325383546110e1b6aa9986728035","link-u-avif-sample-images/kimono.png":"84fd6cfb97a27739608e21779f874b4ae7e80342b2588e8b0b092dee2d57c881","link-u-avif-sample-images/kimono.rotate270.avif":"79a99a0415276cc11f2e871d070a9df84df3385888a2f2fa3534320f6bed98ed","link-u-avif-sample-images/kimono.rotate270.png":"1918a47c02b378945a705301abd4250ddc65bb95afce9424572ffd0fdd1f45ef","link-u-avif-sample-images/kimono.rotate90.avif":"bd1157d8c840713c82b907b9d3ae80bc3817849e11c323d875f8016e035bd3cc","link-u-avif-sample-images/kimono.rotate90.png":"1a73c61692abe96d0a7a9accdb36a83d51bceac79bbb83a00571570f494cca49","link-u-avif-sample-images/plum-blossom-large.png":"af6ea005b726ca39f342e946aa53bed88e5a140413ce896d166bb35ab0aa3b4f","link-u-avif-sample-images/plum-blossom-large.profile0.10bpc.yuv420.alpha-full.avif":"cf8e15ec4b210235f3d68332a1adeb64e35c41b8d8e1e7586ae38b6d9cd8926c","link-u-avif-sample-images/plum-blossom-large.profile0.10bpc.yuv420.alpha-full.monochrome.avif":"b413440309d5669a7aefa06f291f72de0d0c09972e3da9a385e6016d6a1c5562","link-u-avif-sample-images/plum-blossom-large.profile0.10bpc.yuv420.alpha-limited.avif":"64f6f2b1fda594af5c9e2d6e4bc752b55e8121000cdcedc0066018e53f76de40","link-u-avif-sample-images/plum-blossom-large.profile0.10bpc.yuv420.alpha-limited.monochrome.avif":"2b175a600aed64c1c1de4b2d661fb405437b1ff000b964d4be6ac437ce73136f","link-u-avif-sample-images/plum-blossom-large.profile0.8bpc.yuv420.alpha-full.avif":"21ebb3732186bf7c6c13cf7197155b64201e674b9c79cf613b6e5718bde14c2a","link-u-avif-sample-images/plum-blossom-large.profile0.8bpc.yuv420.alpha-full.monochrome.avif":"65917797e511c9033b3e225eb5d84f3c0440b7a496d4b8ab5674e123ad68aab7","link-u-avif-sample-images/plum-blossom-large.profile0.8bpc.yuv420.alpha-limited.avif":"f4809df9188fa46ed100f63c78c4cf42559d90a98351a8f69e177385920672b4","link-u-avif-sample-images/plum-blossom-large.profile0.8bpc.yuv420.alpha-limited.monochrome.avif":"dffc213dc36f0b5ff3d86254f5185c2d1fb03380918a8fa39d186fb59cbba7cc","link-u-avif-sample-images/plum-blossom-large.profile1.10bpc.yuv444.alpha-full.avif":"0a615cfb673ab45e37da3582c17dd36f86d5da3d81246a32951d1db4ed90149d","link-u-avif-sample-images/plum-blossom-large.profile1.10bpc.yuv444.alpha-limited.avif":"d1cc6a0db116a68e229676b289e8ced84d42a9f0e8d3ccd760fc92dbeb932547","link-u-avif-sample-images/plum-blossom-large.profile1.8bpc.yuv444.alpha-full.avif":"8626cf0b2c60fee51cf1df7fe4d8a18081b72e3604f7d3ff14cc5a35581927d9","link-u-avif-sample-images/plum-blossom-large.profile1.8bpc.yuv444.alpha-limited.avif":"56bf18e4bcbfbea460c306ab900fc506169854d2b91690e1a48156a86fff3264","link-u-avif-sample-images/plum-blossom-large.profile2.10bpc.yuv422.alpha-full.avif":"b56f3c33797e4c5bb80418ae25f6f2c6fc88ddc1f6965d82abc44059f052f36c","link-u-avif-sample-images/plum-blossom-large.profile2.10bpc.yuv422.alpha-full.monochrome.avif":"c3c6db4ce801c68e2afd7bfb72abacc13287cc2e247917a817ff5632bd4b18fb","link-u-avif-sample-images/plum-blossom-large.profile2.10bpc.yuv422.alpha-limited.avif":"095f57fff1dc037a6414c60263415dcfa86b10d81f58e8e4c3aef17cffae0e5f","link-u-avif-sample-images/plum-blossom-large.profile2.10bpc.yuv422.alpha-limited.monochrome.avif":"ba3035a69296d12f47d1c450f2de8cc0c9059ebbf27bb8b0996ff6d1ab1132a1","link-u-avif-sample-images/plum-blossom-large.profile2.12bpc.yuv420.alpha-full.avif":"a9551e1963049b874216b40aaf9be45bc44dc11887770712b77240862c6c08a9","link-u-avif-sample-images/plum-blossom-large.profile2.12bpc.yuv420.alpha-full.monochrome.avif":"a8a0ba881cd0aef45a5874f412e97812ca457eaf12e56b34bac2ba051e142828","link-u-avif-sample-images/plum-blossom-large.profile2.12bpc.yuv420.alpha-limited.avif":"6891b5bdbed7f541c673c66cec4584b191bb737a49b37cca16ae069830890b42","link-u-avif-sample-images/plum-blossom-large.profile2.12bpc.yuv420.alpha-limited.monochrome.avif":"67e66826637e349e1c3c46316c7048d152aed8453d8cdd00c6b786f87fe176d8","link-u-avif-sample-images/plum-blossom-large.profile2.12bpc.yuv422.alpha-full.avif":"a466503110f60dcadaafe78c2cb0a8ca58334c22868efe428c7ac12b69407c95","link-u-avif-sample-images/plum-blossom-large.profile2.12bpc.yuv422.alpha-full.monochrome.avif":"a8a0ba881cd0aef45a5874f412e97812ca457eaf12e56b34bac2ba051e142828","link-u-avif-sample-images/plum-blossom-large.profile2.12bpc.yuv422.alpha-limited.avif":"061b4c70707e7fc8866580656cca7ca2da2263645829a564dbf8f205d639f058","link-u-avif-sample-images/plum-blossom-large.profile2.12bpc.yuv422.alpha-limited.monochrome.avif":"67e66826637e349e1c3c46316c7048d152aed8453d8cdd00c6b786f87fe176d8","link-u-avif-sample-images/plum-blossom-large.profile2.12bpc.yuv444.alpha-full.avif":"4a03c8bcfcaadccdeb07432ed80680b06aba5ae5e616fc370b376acb478f6cd1","link-u-avif-sample-images/plum-blossom-large.profile2.12bpc.yuv444.alpha-full.monochrome.avif":"a8a0ba881cd0aef45a5874f412e97812ca457eaf12e56b34bac2ba051e142828","link-u-avif-sample-images/plum-blossom-large.profile2.12bpc.yuv444.alpha-limited.avif":"376625ce4e7ec3b57344a9f2185a34975fe380774c9f8e0dd4ef61c46da94fca","link-u-avif-sample-images/plum-blossom-large.profile2.12bpc.yuv444.alpha-limited.monochrome.avif":"67e66826637e349e1c3c46316c7048d152aed8453d8cdd00c6b786f87fe176d8","link-u-avif-sample-images/plum-blossom-large.profile2.8bpc.yuv422.alpha-full.avif":"1e17b7dd8e351cb667bc6ec0b81fdebca9fd30ad5e588b3eac57bf9f90a9b58b","link-u-avif-sample-images/plum-blossom-large.profile2.8bpc.yuv422.alpha-full.monochrome.avif":"f77588d2ff39e4461869a95ca236efdf4a3fdc17b8a6e3907e63b417e56c81b5","link-u-avif-sample-images/plum-blossom-large.profile2.8bpc.yuv422.alpha-limited.avif":"f2eabd3fc2db07b361d55b5af63023d28b5bdd0047a665e9d0685651ce9db94b","link-u-avif-sample-images/plum-blossom-large.profile2.8bpc.yuv422.alpha-limited.monochrome.avif":"dd88c377b253d689bfd4600d7c3007448df0ed92f679b661d5d51e051a6916d8","link-u-avif-sample-images/plum-blossom-small.png":"c859fd97b647e494461f65835b9c1c3476807aee77076599adf18a832b3617a4","link-u-avif-sample-images/plum-blossom-small.profile0.10bpc.yuv420.alpha-full.avif":"fe3379620f983e5da4210b0f7c5d164e86208b34106d6b11d56e2b52beee5dfe","link-u-avif-sample-images/plum-blossom-small.profile0.10bpc.yuv420.alpha-full.monochrome.avif":"9e6234686053dba2e44bb32192c641074095a61e45aa1bede85bb83751e6e157","link-u-avif-sample-images/plum-blossom-small.profile0.10bpc.yuv420.alpha-limited.avif":"60ffa59dd007aea3bb596cfb03853b3dad490b1ffd10471ad4fe1901ec819907","link-u-avif-sample-images/plum-blossom-small.profile0.10bpc.yuv420.alpha-limited.monochrome.avif":"58abfa027525aca7339a705f311bc30b000aef9822c7c50b232894ece1ba9cb1","link-u-avif-sample-images/plum-blossom-small.profile0.8bpc.yuv420.alpha-full.avif":"541ca66a11b1430d11f77b74a13f859239a3bd9f44976b8dfe163c5d7595a69f","link-u-avif-sample-images/plum-blossom-small.profile0.8bpc.yuv420.alpha-full.monochrome.avif":"6d7852c63c27a77bef94443e178ecf6b6a3da8cc846f9f0c1adc17f7fc35e1f3","link-u-avif-sample-images/plum-blossom-small.profile0.8bpc.yuv420.alpha-limited.avif":"3712216ffc7edb95a976b68469ead533fda6fe9f3d2e8cb09cbdb0d01d9c094b","link-u-avif-sample-images/plum-blossom-small.profile0.8bpc.yuv420.alpha-limited.monochrome.avif":"59672af536b169ebf7e48129167dc91cb253925517c37db28b64539f7afba5d3","link-u-avif-sample-images/plum-blossom-small.profile1.10bpc.yuv444.alpha-full.avif":"561d5158425ad39425916a3be048b0202e82efef44cf1a9f711db57192d2ff01","link-u-avif-sample-images/plum-blossom-small.profile1.10bpc.yuv444.alpha-limited.avif":"88336f29457c1dc4ae0b754ef14b791de4d8c337f2b44d7960aafcca08a5586e","link-u-avif-sample-images/plum-blossom-small.profile1.8bpc.yuv444.alpha-full.avif":"245a3dad6371dc702f29eb7e9735f843b63c525da871859728bedbe5bb274985","link-u-avif-sample-images/plum-blossom-small.profile1.8bpc.yuv444.alpha-limited.avif":"490c216b5850c670f6088ee72c7fd906102b2dd0c8432c01a517b3328db27c75","link-u-avif-sample-images/plum-blossom-small.profile2.10bpc.yuv422.alpha-full.avif":"0d0bbbcb0c9ade1c827317a6409ce6ba25027b36da1b6752379a5f5d4c8af056","link-u-avif-sample-images/plum-blossom-small.profile2.10bpc.yuv422.alpha-full.monochrome.avif":"418a9d4b7dcbc1f67fc4b95ccb2e7946c446fddd35a79f0d587b3f2165cb3f14","link-u-avif-sample-images/plum-blossom-small.profile2.10bpc.yuv422.alpha-limited.avif":"a41dcfabb3795ed93a05881a91bf4d1c5d1b9b0e5d0db728f12684b12613e0c9","link-u-avif-sample-images/plum-blossom-small.profile2.10bpc.yuv422.alpha-limited.monochrome.avif":"4b6a18f4f608d1b00598e67c1c91a4e8f4943ae5acf0166ae0121cc21f3b7437","link-u-avif-sample-images/plum-blossom-small.profile2.12bpc.yuv420.alpha-full.avif":"5e6b83adee3aeac4bba3f38e854e2ed7585aa1557a74b5fa66596098c53e26f2","link-u-avif-sample-images/plum-blossom-small.profile2.12bpc.yuv420.alpha-full.monochrome.avif":"fb0937564c08f4e1c22ebbde426a0eff6a1d388434c30148bc7e5582dc378caa","link-u-avif-sample-images/plum-blossom-small.profile2.12bpc.yuv420.alpha-limited.avif":"f42e780bff644167e27525fee65b23e70814f7665ea19b6d693eb127c5eeebd8","link-u-avif-sample-images/plum-blossom-small.profile2.12bpc.yuv420.alpha-limited.monochrome.avif":"d41ead1d69d33d0cf5f6fe575beb5f60d9565300c535f9042113dd8a748c1d31","link-u-avif-sample-images/plum-blossom-small.profile2.12bpc.yuv422.alpha-full.avif":"c6ee9234ee7783d0203f9512e3cc8fe76a694675bcf03c320ff8bab4684bd4e9","link-u-avif-sample-images/plum-blossom-small.profile2.12bpc.yuv422.alpha-full.monochrome.avif":"fb0937564c08f4e1c22ebbde426a0eff6a1d388434c30148bc7e5582dc378caa","link-u-avif-sample-images/plum-blossom-small.profile2.12bpc.yuv422.alpha-limited.avif":"21e1e51fc6da66e090e12e1df5aeabf1f478df64bcb8151caaa687ad262bdd9d","link-u-avif-sample-images/plum-blossom-small.profile2.12bpc.yuv422.alpha-limited.monochrome.avif":"d41ead1d69d33d0cf5f6fe575beb5f60d9565300c535f9042113dd8a748c1d31","link-u-avif-sample-images/plum-blossom-small.profile2.12bpc.yuv444.alpha-full.avif":"dfed73d646d7159d3ee4f9ce95ea628fdd33bf8bf1bb02a83d88302d088f4d97","link-u-avif-sample-images/plum-blossom-small.profile2.12bpc.yuv444.alpha-full.monochrome.avif":"fb0937564c08f4e1c22ebbde426a0eff6a1d388434c30148bc7e5582dc378caa","link-u-avif-sample-images/plum-blossom-small.profile2.12bpc.yuv444.alpha-limited.avif":"5539cd575256772ba31d6e87cb0136d5f465f84b041a4677b1023cfd6bee9956","link-u-avif-sample-images/plum-blossom-small.profile2.12bpc.yuv444.alpha-limited.monochrome.avif":"d41ead1d69d33d0cf5f6fe575beb5f60d9565300c535f9042113dd8a748c1d31","link-u-avif-sample-images/plum-blossom-small.profile2.8bpc.yuv422.alpha-full.avif":"f205cf2c05265b84e45ceb723e9a3707fd8749130166d4797e64c8c62b497f8c","link-u-avif-sample-images/plum-blossom-small.profile2.8bpc.yuv422.alpha-full.monochrome.avif":"ad2244cb7b2ac487a5104d6e5a07270f9ceb2550e4d56d3662fcc1868910ced5","link-u-avif-sample-images/plum-blossom-small.profile2.8bpc.yuv422.alpha-limited.avif":"7ef9468effdc970e4e6e8cc7533d66dc967686e357dda3dda186c021f9e6156b","link-u-avif-sample-images/plum-blossom-small.profile2.8bpc.yuv422.alpha-limited.monochrome.avif":"3dd34d854ff83b6e27a2bf98301380a6cac272084ed863735285ab5dc8acda00","link-u-avif-sample-images/plum-blossom.svg":"be1f03dd05f63292c85a96b1c48fb06727283610cc69b1e116d547bab27b171d","link-u-avif-sample-images/red-at-12-oclock-with-color-profile-10bpc.avif":"5842951d81118d256962384e08a986816e8ade6b05530269f0208c6b69cedb3b","link-u-avif-sample-images/red-at-12-oclock-with-color-profile-12bpc.avif":"1f0c9f36d69b9aa13eff3897ada3e78b81099c613b329a402c27e09453e7e261","link-u-avif-sample-images/red-at-12-oclock-with-color-profile-8bpc.avif":"3e6f2f4016e66e3c94707eaa8373e6f582321e005964cd35b64bc183e1bf10ea","link-u-avif-sample-images/red-at-12-oclock-with-color-profile-lossy.avif":"79483242f2dca12c4ec18bd33ff8099216b3094fb55a26a909f046b2f9b4ce58","link-u-avif-sample-images/red-at-12-oclock-with-color-profile.jpg":"d56f809ea5eda74578af57e2f80b41856a1fe2ff436c741aa58757387af998bd","link-u-avif-sample-images/red-at-12-oclock-with-color-profile.png":"4eab95e358eb48e052c7b8c94d30a8c6cb1c9c3c2dfd9845240281dd5dd7b800","link-u-avif-sample-images/scripts/compare.sh":"0562689bcd40e9fc1322bf037d6f999aa4406a2229f19e74b96cc450e370e429","link-u-avif-sample-images/star-10bpc-with-alpha.avifs":"5643ac1f235ae6599186dd66c66507db6fa46a17b2b18e82ea9344870eb98a9b","link-u-avif-sample-images/star-10bpc.avifs":"c61d899a59dbd8c7b2f7bcfca9069a0e13ff1606899af227938a28502e6cbf88","link-u-avif-sample-images/star-12bpc-with-alpha.avifs":"88a350c3550ce36c1777fe7eb1e906c6829d3ed8b241aa1e0e46f1a4e2567c4b","link-u-avif-sample-images/star-12bpc.avifs":"c1a59db6f180208a3177d77c7f9ab08290e903c7bdaf929331b807a510f8c619","link-u-avif-sample-images/star-8bpc-with-alpha.avifs":"13a12908cb162a855cccc9221a5f9f736e8ea07902ffbdcf007f8fde5ed255f2","link-u-avif-sample-images/star-8bpc.avifs":"ae35b161de67a5afeb195ee401f369c34990f0ff8662f70ab4065bc6931f0a66","link-u-avif-sample-images/star.gif":"389cdd02efbdce4f0205cae6e91c1f64e34fa0ca1fe02351da1b37e16cbb642a","link-u-avif-sample-images/star.input.txt":"970163b942843618616f42233abe91d40fb68f6f5451860db259551711867b55","link-u-avif-sample-images/star.png":"18569167cf7ebd265ab6973d071d259aacfbb46c0408b7d4874c8cc9df9bb1ad","link-u-avif-sample-images/star.svg":"13089d0986b31b87919029fa69f2b68981af4023306bf0f79922f6772396008a","link-u-avif-sample-images/star180.png":"21bc11be2b51334fe4589634507612e7edce96d36e6a99219d029e440164e8b8","link-u-avif-sample-images/star270.png":"5c93f538dcdc70840b9925b4089083acc9c25e95265b3f3dea18d695451b441e","link-u-avif-sample-images/star90.png":"2defc5d21e70447653fec5dc14a697d9dd555d7a0c14e79cb2d9f80796a51a6d","src/boxes.rs":"270a3e3bf90279bfc83f95acadaba9611c25243280bca71dfa9c044d5441cf15","src/lib.rs":"73114a5c28472e77082ad259113ffafb418ed602c1741f26da3e10278b0bf93e","src/macros.rs":"76c840f9299797527fe71aa5b378ffb01312767372b45cc62deddb19775400ae","src/tests.rs":"75fe5467109242b2cc7991f8228e2e2ad1de5be2f29272a4a7f08c4e21ab5fa4","src/unstable.rs":"c2cef9a3b2b08a4da66fa0305fce7a117bd99c9b8d57b0a044e1d99dbda6faf5","tests/1x1-black-alpha-50pct-premultiplied.avif":"31a8c235bf2cf601a593a7bc33f7f2779f2d5b2e0cd145897b931fce94b0c0b8","tests/a1lx.avif":"81a784c568e7619bd47c4e7153181e9a86c8a03221097aa63979f97affd7efbb","tests/a1op.avif":"184e50efd3ad226800c610da7bc470d29b548d9fa942fd1fd1848ed02e2e5f0a","tests/alpha_video_avif_major_avis_compatible.avif":"81771981248c4e0d708f0828eadb20e9e37e7c21280efe5726666958f899c237","tests/alpha_video_fixed.avif":"67051d1a4ccf9f3e38d4514d8a6b3a2e07f1beb979369cabdc60881a698a36ac","tests/alpha_video_no_avis.avif":"a95f0e7c818bc5bf646143cf43474b70722e17669d4f2a32874c125936207d6a","tests/amr_nb_1f.3gp":"d1423e3414ad06b69f8b58d5c916ec353ba2d0402d99dec9f1c88acc33b6a127","tests/amr_wb_1f.3gp":"be635b24097e8757b0c04d70ab28e00417ca113e86108b6c269b79b64b89bcd5","tests/av1C-missing-essential.avif":"a1501254c4071847b2269fe40b81409c389ff14e91cf7c0005a47e6ea97a6803","tests/bad-ipma-flags.avif":"ecde7997b97db1910b9dcc7ca8e3c8957da0e83681ea9008c66dc9f12b78ad19","tests/bad-ipma-version.avif":"7f9a1a0b4ebbf8d800d22eaae5ff78970cc6b811317db6c1467c6883952b7c9b","tests/bbb_sunflower_QCIF_30fps_h263_noaudio_1f.3gp":"03e5b1264d0a188d77b9e676ba3ce23a801b17aaa11c0343dfd851d6ea4e3a40","tests/clap-basic-1_3x3-to-1x1.avif":"83af9c8196fa93b2475163585a23d0eb5a8f8015d0db8da7a5d6de61adfb1876","tests/clap-missing-essential.avif":"4d61aacd2327661a456abc76d3d490e5ddd2b6f8cbfa52922a6c541c9d983193","tests/clusterfuzz-testcase-minimized-mp4-6093954524250112":"af7044a470732d4e7e34ac7ab5ff038c58b66f09702cbcd774931d7766bbfd35","tests/corrupt/a1lx-marked-essential.avif":"0d481240222450827ea335ae9a1a300777a0db4f9b0f4c17ed77c758c5133fa3","tests/corrupt/a1op-missing-essential.avif":"33c24d54f43f1a7be7a8334718881c8a0de24730c997c7842b9d7140e75017ea","tests/corrupt/alpha_video_moov_is_moop.avif":"89e0091edd6efc2c5b163525553c5abc56263fe1b3b885184bb07b9ea4bf346d","tests/corrupt/bug-1655846.avif":"e0a5a06225800fadf05f5352503a4cec11af73eef705c43b4acab5f4a99dea50","tests/corrupt/bug-1661347.avif":"31c26561e1d9eafb60f7c5968b82a0859d203d73f17f26b29276256acee12966","tests/corrupt/clusterfuzz-testcase-minimized-avif-4914209301856256.avif":"34a142c7916e314881f3fb6394add1c543fac0e5b45109e3a425eeb4c68998d0","tests/corrupt/hdlr-not-first.avif":"2c29308af077209b9c984921b7e36f8fb7ca7cf379cf8eba4c7a91f65bc7a304","tests/corrupt/hdlr-not-pict.avif":"9fe37619606645a95725300a9e34fada9190d1e0b3919881db84353941ca9291","tests/corrupt/imir-before-clap.avif":"22d6b5dacf0ef0be59053beba7564b08037fed859ada2885e3476e0ff0d19c95","tests/corrupt/invalid-avif-colr-multiple-nclx.avif":"7990a995855120dc4f724a6098816595becc35077fcd9e0de8c68300b49c4f1f","tests/corrupt/invalid-avif-colr-multiple-prof.avif":"b077a6b58e3a13ad743ee3f19fbae53b521eab8727606e0dba9bf06384f3121c","tests/corrupt/invalid-avif-colr-multiple-rICC.avif":"88b24d4d588744b9f2cdc03944f28283e9315eb3de7d7d57773a0541137f6529","tests/corrupt/invalid-avif-colr-multiple.zip":"9abddcbc47fde6da20263a29b770c6a9e76c8ab8dc785ef8512f35d9cb3206ed","tests/corrupt/ipma-duplicate-item_id.avif":"ca8c5275b0b8b79c1068489a52d0a5c8f0b4453463971e72b694189f11c10745","tests/corrupt/ipma-duplicate-version-and-flags.avif":"cf8e15ec4b210235f3d68332a1adeb64e35c41b8d8e1e7586ae38b6d9cd8926c","tests/corrupt/ipma-invalid-property-index.avif":"2480e773fa716d22883032d05fd4cf2c6b00fba8796cf4ff286a5d1ba26adff6","tests/corrupt/lsel-missing-essential.avif":"43c3b1e4c4acecd7559a9a7197a7befd43c71705748f0f8c063bca3be1c6d074","tests/corrupt/no-alpha-av1C.avif":"ad3d34d6331db7d9bea0c5f37efb88923520e33e08e7c636a5df435a4575eae7","tests/corrupt/no-av1C.avif":"eeb4fc50930c91465999f787c4a2a3b12de20556da0857be72da5a1a9eaa3f01","tests/corrupt/no-ftyp.avif":"74b431f32b2e2761e77df7fdb260f623b4e8f7e3f4c8af8a42d6826911706d7b","tests/corrupt/no-hdlr.avif":"91a1eb70c7b6adf2104e471d7deeeb98084a591d64ce09ba106c27edfbc3a409","tests/corrupt/no-ispe.avif":"4b6edfd8c9b40c25dc40305a6057e32b5e65f40da4a9d810c58dbff53254113f","tests/corrupt/no-pitm.avif":"7960eeb9e6e5140fbe5eb6d281e6974efd6c3c0147562f3dcf06f6b009dc540a","tests/corrupt/no-pixi-for-alpha.avif":"f8adc3573c79ee25bf6d4dd2693c61661469b28f86a5c7b1d9e41b0e8d2d53bb","tests/corrupt/no-pixi.avif":"4b1776def440dc8b913c170e4479772ee6bbb299b8679f7c564704bd03c9597e","tests/hdlr-nonzero-reserved.avif":"b872dcd7b4f49c6808d6da109cf4fedc26a237c42e8529c5aa8f7130abaf40a9","tests/imir-missing-essential.avif":"b1226e4b1358528befbd3f1126b5caf0c5051b4354777b87e71f6001f3829f87","tests/invalid-avif-hdlr-name-multiple-nul.avif":"0d3e4a6ce42154ee288c18339c2b59ff2104fd890cd2d616e5dbf26375a90e98","tests/irot-missing-essential.avif":"b7da1fc1d1b45bb1b7ca3494476e052f711d794a6d010df6870872ed8b9da10e","tests/lsel.avif":"ef8ba6827709f48cd45f749efb580129162d9599ea98f3363d2140957502d806","tests/multiple-extents.avif":"b5549ac68793e155a726d754e565cea0da03fa17833d3545f45c79e13f4c9360","tests/no-mif1.avif":"1442aa6ffaeb9512724287768bfd1850d3aa29a651ef05abb33e5dec2b3ee5c2","tests/overflow.rs":"16b591d8def1a155b3b997622f6ea255536870d99c3d8f97c51755b77a50de3c","tests/public.rs":"8918d5190a36c697445aa4b140a31cd3032582f1e504b4c2527f75a2155f80ae","tests/valid-alpha.avif":"9d417a35b9b62ad3ff66ffbc55f16552aacf821a092aa5ef4adff7e746bd4c2f","tests/valid-avif-colr-nclx-and-prof-and-rICC.avif":"ab6f5e786d26f8bcade5993f8b9cca3cd004a3d7fcec76e829f5d0f98cb18e7b","tests/valid-avif-colr-nclx-and-prof.avif":"0e982818de61869fcb85a2a4c2b7b8aeecb3053cbfdc6276987f91204998eefb","tests/valid-avif-colr-nclx-and-rICC.avif":"8530ef1305ff956a0c2912d0b3d1e0fc3a68cf3103e70b04cc2574530389b030","tests/valid-avif-colr-nclx.avif":"345ab58b7b1cb48aba2e21eb8dc5ab0a751a78a752ce1896c59b4bf361992f38","tests/valid-avif-colr-prof-and-rICC.avif":"1f0f085141106885bda78b0879c768818420d8196b39440a36578456a7d50a6c","tests/valid-avif-colr-prof.avif":"5d7aaefb5204ebe1cc296456866b8e46e023748b921a38ee56fd6c776a9733ff","tests/valid-avif-colr-rICC.avif":"e1c7b49bfad5904b484bd5118e6b33b78e2dc708a31a10fcbb0e4a373ed8dbb7","tests/valid.avif":"f0b33e09bf01232e0877df325f47986c0bee7764f2a81c9c908ae109e7dc63c4"},"package":null} -\ No newline at end of file -+{"files":{"Cargo.toml":"f283fc1597f492cd1e03cd08b9c77f042ae4494fc96b4dcb566ec0abbda65efc","LICENSE":"fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85","README.md":"86cb40854b93f988e3a63ce6fe39d2ce95367f8ca301a5ba50676ff98a0ad791","benches/avif_benchmark.rs":"cd99c0dde025ab40d2cd860f53dc697a1587a48c164c3e5c8adfd40add29d772","link-u-avif-sample-images/.github/workflows/encode-and-decode-daily.yml":"84b787f721024a100ce09ac5714a1d78a4811893861e89495313f435b9d02359","link-u-avif-sample-images/.gitignore":"ac16d40779ab2d608843a3cb1b0418a1ffdc0e71a06c4d140386fadf007a54a7","link-u-avif-sample-images/LICENSE.txt":"da89f9867822be4b8adb1e601d9e9226c195016c6508015eb7593e68ead0c98a","link-u-avif-sample-images/Makefile":"b5697e8685d2a9ce0f4b4c976a5f707022ed113782d16dc59ae280d3a8ce77b1","link-u-avif-sample-images/README.md":"d249fb7bef4f21359cfc4f2977e1b2f2c6e6dd6e57cb1cdc1da1f0edd8aa55d0","link-u-avif-sample-images/fox.jpg":"927997a90ae88ead007283bf9c1392159d0acd2e9890522146211fda2112a2d9","link-u-avif-sample-images/fox.odd-height.png":"6136247772bd1c0edd50426bca4f3485473ac25a784e5ec8777f7491598e96db","link-u-avif-sample-images/fox.odd-width.odd-height.png":"6f91dc21c137f318d0443ce28bbf3f74d5502180c254327b46e41040a33f1363","link-u-avif-sample-images/fox.odd-width.png":"a8b2328c8700c16280c5ab40a34147edac598d4d48ca101bef649e468ae1492e","link-u-avif-sample-images/fox.png":"c45bfb5780843c70a37426340020e3e7ff41d7cf1df9fec614a5cf429d078573","link-u-avif-sample-images/fox.profile0.10bpc.yuv420.avif":"811af5e96631309030a14cbc30c3bacfaa667f2e36e16a4f30434b8f5a23310c","link-u-avif-sample-images/fox.profile0.10bpc.yuv420.monochrome.avif":"e35713343e9ee04c51ab9cfdc99a0c7d126a1917cb83f5b9a23c71ed59269be2","link-u-avif-sample-images/fox.profile0.10bpc.yuv420.monochrome.odd-height.avif":"485623f7838d8f442c47348c6492765e6aafbc3d5ccd8e90efc9c812ff15e265","link-u-avif-sample-images/fox.profile0.10bpc.yuv420.monochrome.odd-width.avif":"8e75b9a8975267359d827e4cbc6877b1674aa31b87f88f222dde03263f9254df","link-u-avif-sample-images/fox.profile0.10bpc.yuv420.monochrome.odd-width.odd-height.avif":"1fff5915a332d6aaa85d668f3f338bda6fad9c6ec1f380f2c46737d536cea5de","link-u-avif-sample-images/fox.profile0.10bpc.yuv420.odd-height.avif":"cca9785f14c74d865453518c0962dabd6d1b92d2c6c5f5ac67efdbf5606acb83","link-u-avif-sample-images/fox.profile0.10bpc.yuv420.odd-width.avif":"de3399d8b56431f0ed34e2f14200f31dd54544fddbb12f39b4d55449d5660c56","link-u-avif-sample-images/fox.profile0.10bpc.yuv420.odd-width.odd-height.avif":"07507744cb76b74a3586b93fc3b273a98f998d75f7687db3e9cb3725d7b1fb9d","link-u-avif-sample-images/fox.profile0.8bpc.yuv420.avif":"cb884c82ac7b6d4fa03b1f687e9e20abc346107095473e9c1d422aaf0de14eaf","link-u-avif-sample-images/fox.profile0.8bpc.yuv420.monochrome.avif":"15d84077066c47fdbe2a7b8ed583a17017d09a033144ac1b31486d6c8f6f5c82","link-u-avif-sample-images/fox.profile0.8bpc.yuv420.monochrome.odd-height.avif":"365439d2ee2fe5229e066362c03a73a182c7f6626772ecf5345b22752d32e681","link-u-avif-sample-images/fox.profile0.8bpc.yuv420.monochrome.odd-width.avif":"c623b9943123d6c47d3300444f7255cbdfebfe2b47a670287f2baeb717fac42b","link-u-avif-sample-images/fox.profile0.8bpc.yuv420.monochrome.odd-width.odd-height.avif":"dd069f3c3c4f7589f5f7ef1d7b6a91b8cb975d32663a4a92b6d75219edd72954","link-u-avif-sample-images/fox.profile0.8bpc.yuv420.odd-height.avif":"75628450288ace3386651725411c8f0ffff7eb95f82c5307b0faa3350f09f50e","link-u-avif-sample-images/fox.profile0.8bpc.yuv420.odd-width.avif":"f91b6f455412adabc5094011362eaaa1f6a9d5740de0b8a1be42a96c16e7617f","link-u-avif-sample-images/fox.profile0.8bpc.yuv420.odd-width.odd-height.avif":"bb8695cacacaf8f2e13a739de75e5e8a9d970d68c3acdfb7d82171a9bac2f01e","link-u-avif-sample-images/fox.profile1.10bpc.yuv444.avif":"a10de8204aee73ba1786daca6390546bd7aa6b069aaa644012219a1c11246a43","link-u-avif-sample-images/fox.profile1.10bpc.yuv444.odd-height.avif":"734a5badc59a8bed19e8eb476911048ddb011ca7c9eac31b7a7ed20e0135ac2c","link-u-avif-sample-images/fox.profile1.10bpc.yuv444.odd-width.avif":"68d15d76d95f268e810dfd87bbf96d8c3197580afce2d30b50bb1f07865077f3","link-u-avif-sample-images/fox.profile1.10bpc.yuv444.odd-width.odd-height.avif":"01e469b33bacb7e07e15e23b2997907bbcf02d8fcc99885a027494d31c45547c","link-u-avif-sample-images/fox.profile1.8bpc.yuv444.avif":"a0cdc981a6b056c8af2d177a1438c332d630040dacbfd1c89bb5e3e381ba5822","link-u-avif-sample-images/fox.profile1.8bpc.yuv444.odd-height.avif":"77e0510def73213c00ebcf051cf45fa63cf27d7c69340cc145ab6d44ec77bb07","link-u-avif-sample-images/fox.profile1.8bpc.yuv444.odd-width.avif":"12787042364bd13be01830f988cb714220bde340a3329baa808df27a269b83f8","link-u-avif-sample-images/fox.profile1.8bpc.yuv444.odd-width.odd-height.avif":"fad3b6dd9cb99e6925858f69aafae3f68c861845f2c3d4a6d1c51c6161490134","link-u-avif-sample-images/fox.profile2.10bpc.yuv422.avif":"e34f3bab5df802be2d422c685824464eb5f7e182b235ca99bde11c4c34ff3ac2","link-u-avif-sample-images/fox.profile2.10bpc.yuv422.monochrome.avif":"05804752621e2fd7a9d85b01e2995a50e3efd30693efd934152560622d66e841","link-u-avif-sample-images/fox.profile2.10bpc.yuv422.monochrome.odd-height.avif":"ef041f2efa0424d3a6dcfc5f0c3f619aea0e197aaeb5a050a2d877a457513921","link-u-avif-sample-images/fox.profile2.10bpc.yuv422.monochrome.odd-width.avif":"b711b321b8a4d3a41e08f80a17c2203b839458cb6346aff6fff3f8d7699032e6","link-u-avif-sample-images/fox.profile2.10bpc.yuv422.monochrome.odd-width.odd-height.avif":"e3f40aad0ddd6c04ffacf4a754a0525986c89d519119d37655282551e3ea3a59","link-u-avif-sample-images/fox.profile2.10bpc.yuv422.odd-height.avif":"4ef74c37712b41d6e5269d939f9d52031bc10746f7c8c029db618c5935aff9a6","link-u-avif-sample-images/fox.profile2.10bpc.yuv422.odd-width.avif":"4cf6c849f4a48a639217ad9a1e0d027f4fc804d524c03e6707ec9714a252532f","link-u-avif-sample-images/fox.profile2.10bpc.yuv422.odd-width.odd-height.avif":"3d3978e8e8d07270f82a877d3535f9483b88fce93a1c4accb658b494452b1d36","link-u-avif-sample-images/fox.profile2.12bpc.yuv420.avif":"626d73272e59722084c528b27b72a0920bec462a10749b3e87036e42bf8a24e5","link-u-avif-sample-images/fox.profile2.12bpc.yuv420.monochrome.avif":"caf50c467242b3fa0b895a2af131fa0d03dd7b34989f2b1a51d25b2246c98fab","link-u-avif-sample-images/fox.profile2.12bpc.yuv420.monochrome.odd-height.avif":"1e88b92df592c02af53ff5258fa898ac8fe1d71954e9a440500ef7879b8a1c46","link-u-avif-sample-images/fox.profile2.12bpc.yuv420.monochrome.odd-width.avif":"466efdd269f3be3b1c88afc093c839e50ba5eaf6bd0c2425e157000d02a3c21a","link-u-avif-sample-images/fox.profile2.12bpc.yuv420.monochrome.odd-width.odd-height.avif":"36014509d0688cb307e0ffcdb5b4c16ff6e6c79772c7fbbeea33b4d483a1566f","link-u-avif-sample-images/fox.profile2.12bpc.yuv420.odd-height.avif":"d1786723a5d6ea1e1764b0045dc3f669fe3905ffc2913011a2b1b424d2393397","link-u-avif-sample-images/fox.profile2.12bpc.yuv420.odd-width.avif":"a2d9178cc5622e28472a735650d9c4deaec6d27d69830110911f4158f9d4a04e","link-u-avif-sample-images/fox.profile2.12bpc.yuv420.odd-width.odd-height.avif":"89a9fc7598d72251b903e0c7088ab3e7a7f316b5e02b85f8c69e51f8eb0c7e69","link-u-avif-sample-images/fox.profile2.12bpc.yuv422.avif":"51476b8471e1c0a5ebbd1e7545709495bef619cc96c02d277aad32b1deff8ea9","link-u-avif-sample-images/fox.profile2.12bpc.yuv422.monochrome.avif":"caf50c467242b3fa0b895a2af131fa0d03dd7b34989f2b1a51d25b2246c98fab","link-u-avif-sample-images/fox.profile2.12bpc.yuv422.monochrome.odd-height.avif":"1e88b92df592c02af53ff5258fa898ac8fe1d71954e9a440500ef7879b8a1c46","link-u-avif-sample-images/fox.profile2.12bpc.yuv422.monochrome.odd-width.avif":"466efdd269f3be3b1c88afc093c839e50ba5eaf6bd0c2425e157000d02a3c21a","link-u-avif-sample-images/fox.profile2.12bpc.yuv422.monochrome.odd-width.odd-height.avif":"36014509d0688cb307e0ffcdb5b4c16ff6e6c79772c7fbbeea33b4d483a1566f","link-u-avif-sample-images/fox.profile2.12bpc.yuv422.odd-height.avif":"4808960cdcd1207b29eb6ef5b4db81ae5e63c5d40ef92f7a1e8f4430e765bde4","link-u-avif-sample-images/fox.profile2.12bpc.yuv422.odd-width.avif":"71f3c73737bc04c23d93ea2c61a8a07408f604192fe53fe12c65050927dacb4e","link-u-avif-sample-images/fox.profile2.12bpc.yuv422.odd-width.odd-height.avif":"8f9649384fa09c70af0c2e9e0d94ecd17492c702e015d9d6290d3aefc57c548c","link-u-avif-sample-images/fox.profile2.12bpc.yuv444.avif":"ed96eca6ed79863eaf91e4d666e4e220b5fa4e5a6cb1696477ba901ac12f5dde","link-u-avif-sample-images/fox.profile2.12bpc.yuv444.monochrome.avif":"caf50c467242b3fa0b895a2af131fa0d03dd7b34989f2b1a51d25b2246c98fab","link-u-avif-sample-images/fox.profile2.12bpc.yuv444.monochrome.odd-height.avif":"1e88b92df592c02af53ff5258fa898ac8fe1d71954e9a440500ef7879b8a1c46","link-u-avif-sample-images/fox.profile2.12bpc.yuv444.monochrome.odd-width.avif":"466efdd269f3be3b1c88afc093c839e50ba5eaf6bd0c2425e157000d02a3c21a","link-u-avif-sample-images/fox.profile2.12bpc.yuv444.monochrome.odd-width.odd-height.avif":"36014509d0688cb307e0ffcdb5b4c16ff6e6c79772c7fbbeea33b4d483a1566f","link-u-avif-sample-images/fox.profile2.12bpc.yuv444.odd-height.avif":"c43b4c607e301e34eb953770133d89d15e77d63be8d6421a80d6212fbbbf3453","link-u-avif-sample-images/fox.profile2.12bpc.yuv444.odd-width.avif":"0e6218ce250ee7f84a621f3af73286fd4dabea19e9898d3575c20c5955aa427d","link-u-avif-sample-images/fox.profile2.12bpc.yuv444.odd-width.odd-height.avif":"9f19846d884ac7d161ac2ca15811bb22ff7f3847bc1ad5d7713971ea024631aa","link-u-avif-sample-images/fox.profile2.8bpc.yuv422.avif":"2cb363d30f83bff58ee049874b1808b37cb1d35342edf16b3ce25cb243c9ea55","link-u-avif-sample-images/fox.profile2.8bpc.yuv422.monochrome.avif":"8217b88f350c5d3812d7f863fe9d710c4c1b846b0be8df29ce6b3eb30d2b8d8f","link-u-avif-sample-images/fox.profile2.8bpc.yuv422.monochrome.odd-height.avif":"51eccd8c1368ddec9bc1f3a7631dadb00682e985fbfea66c0a2f533f6a73b67e","link-u-avif-sample-images/fox.profile2.8bpc.yuv422.monochrome.odd-width.avif":"83fe4593ab839cf296a2ccb8a146daf826d1d602f4f239cb63ee020f2cc326f6","link-u-avif-sample-images/fox.profile2.8bpc.yuv422.monochrome.odd-width.odd-height.avif":"4e63b84a980a81adde586314a94d8f834ec763749d8797c286471415b6b75647","link-u-avif-sample-images/fox.profile2.8bpc.yuv422.odd-height.avif":"efc70882aacbb533c0e833a4401949d152dceb364846442cdccca5048ad17a60","link-u-avif-sample-images/fox.profile2.8bpc.yuv422.odd-width.avif":"c07575c88ef400c1725c9260a19439e0e784da41c7db3867059019ddbdb3bebe","link-u-avif-sample-images/fox.profile2.8bpc.yuv422.odd-width.odd-height.avif":"86aee64fd7b11b9834537ea14b2eff234c062c98d32fab51ff14aba262d5b106","link-u-avif-sample-images/hato.16bpc.png":"53b550c587cd1d19a1997184e47f4a3ff2a05cedf7cb4e42a9466a6d6cb60d8d","link-u-avif-sample-images/hato.jpg":"6d4804e5e4adf36a6b138544c81b743ed7abdd9a495a43e883ec77689ca28943","link-u-avif-sample-images/hato.png":"313880f4cc51160fec522d78f1fb7f06df70fe1929a731fc86c68ecefd312277","link-u-avif-sample-images/hato.profile0.10bpc.yuv420.avif":"1e84598c94bc795c55a551bdf6f283b4eed4997bda15e5c4bb2e29d0dc70897b","link-u-avif-sample-images/hato.profile0.10bpc.yuv420.monochrome.avif":"25c19a187d10eac963bb51b3fae1ffe50f3ccbc7ad02e51948dc7467b397ce61","link-u-avif-sample-images/hato.profile0.8bpc.yuv420.avif":"07cd454de19dd638354f75d9e97aab08bc8a04dd45c4f7531cb62a1a5656c8c9","link-u-avif-sample-images/hato.profile0.8bpc.yuv420.monochrome.avif":"120a3f26f3d6cde80869fb52bdb8fdd55b443882c98070ea938575e4790982ff","link-u-avif-sample-images/hato.profile2.10bpc.yuv422.avif":"d54251d4bc023f2e53624a46cb18e56cbc45768bd1bd50394de191c2a42106e8","link-u-avif-sample-images/hato.profile2.10bpc.yuv422.monochrome.avif":"ed33dfdb5e663b3394298b6921f9b19b129e14788dead776430eee2f14780a73","link-u-avif-sample-images/hato.profile2.12bpc.yuv422.avif":"ad361ac7d94fbc6af7ef30cbd3601ff366bc360c304480387a58a4c6fecee9b6","link-u-avif-sample-images/hato.profile2.12bpc.yuv422.monochrome.avif":"e28b4cacda95750e465e205fbfcba6a6af1d8418dac649838730c555ff7d828f","link-u-avif-sample-images/hato.profile2.8bpc.yuv422.avif":"69c353c482c2eb3d3671bb55f7ccfc932e4d781c714a72116e9138ffc6f6c720","link-u-avif-sample-images/hato.profile2.8bpc.yuv422.monochrome.avif":"e7d6f7d42a8519e1482f225fe447b5642d19a54ee830529223eac114a0dec189","link-u-avif-sample-images/images.html":"9e18453dfe5b205600f158282c6896265281e3b04b2fbc332804fab1dbdb3faf","link-u-avif-sample-images/kimono.avif":"63412e0f67f37c8b6fcf0e8269a2afae0a017fa6a3a99d37d055c590b0be52d3","link-u-avif-sample-images/kimono.crop.avif":"f175dcd9c64813b759da185fa67076fb772b76059845b2aad3ddcfab257f75ad","link-u-avif-sample-images/kimono.crop.png":"0d5605bae0ec9d39aad9dc8e1a371d0327c6a224643983e3ee1f4d44cb00f19d","link-u-avif-sample-images/kimono.jpg":"a6ad58e3cea437ee0c841115ba67ae7354de7af734de50de9d0853dd4e571577","link-u-avif-sample-images/kimono.mirror-horizontal.avif":"2bbc004d91145488610158a5acdb4d706495a2b15511db20ff57bb9efd80885c","link-u-avif-sample-images/kimono.mirror-horizontal.png":"9af9e839fe6bf6342831970c20291f619570d2fc687951ae00cd81ea766f53fe","link-u-avif-sample-images/kimono.mirror-vertical.avif":"f10eb04791fcca3409868b367128649f32e6b6fffcf02484cdefa57909f6bb74","link-u-avif-sample-images/kimono.mirror-vertical.png":"4ed003c5868fd2e78c7b2dcbd54a67a0e7593dabb3ac82b1c9e5e2dbdf09b8ec","link-u-avif-sample-images/kimono.mirror-vertical.rotate270.avif":"33c36ec2274b00ac6f81c9f61e55c20cbfce1649ad27520afe635310f516ead1","link-u-avif-sample-images/kimono.mirror-vertical.rotate270.crop.avif":"90ca48f657455b8f8e4a4e1769a05af90a3e34dca11a8b3c32552daf378ee956","link-u-avif-sample-images/kimono.mirror-vertical.rotate270.png":"74b9b7ffa8955761f747a0e6e81d5b7ecb5e325383546110e1b6aa9986728035","link-u-avif-sample-images/kimono.png":"84fd6cfb97a27739608e21779f874b4ae7e80342b2588e8b0b092dee2d57c881","link-u-avif-sample-images/kimono.rotate270.avif":"79a99a0415276cc11f2e871d070a9df84df3385888a2f2fa3534320f6bed98ed","link-u-avif-sample-images/kimono.rotate270.png":"1918a47c02b378945a705301abd4250ddc65bb95afce9424572ffd0fdd1f45ef","link-u-avif-sample-images/kimono.rotate90.avif":"bd1157d8c840713c82b907b9d3ae80bc3817849e11c323d875f8016e035bd3cc","link-u-avif-sample-images/kimono.rotate90.png":"1a73c61692abe96d0a7a9accdb36a83d51bceac79bbb83a00571570f494cca49","link-u-avif-sample-images/plum-blossom-large.png":"af6ea005b726ca39f342e946aa53bed88e5a140413ce896d166bb35ab0aa3b4f","link-u-avif-sample-images/plum-blossom-large.profile0.10bpc.yuv420.alpha-full.avif":"cf8e15ec4b210235f3d68332a1adeb64e35c41b8d8e1e7586ae38b6d9cd8926c","link-u-avif-sample-images/plum-blossom-large.profile0.10bpc.yuv420.alpha-full.monochrome.avif":"b413440309d5669a7aefa06f291f72de0d0c09972e3da9a385e6016d6a1c5562","link-u-avif-sample-images/plum-blossom-large.profile0.10bpc.yuv420.alpha-limited.avif":"64f6f2b1fda594af5c9e2d6e4bc752b55e8121000cdcedc0066018e53f76de40","link-u-avif-sample-images/plum-blossom-large.profile0.10bpc.yuv420.alpha-limited.monochrome.avif":"2b175a600aed64c1c1de4b2d661fb405437b1ff000b964d4be6ac437ce73136f","link-u-avif-sample-images/plum-blossom-large.profile0.8bpc.yuv420.alpha-full.avif":"21ebb3732186bf7c6c13cf7197155b64201e674b9c79cf613b6e5718bde14c2a","link-u-avif-sample-images/plum-blossom-large.profile0.8bpc.yuv420.alpha-full.monochrome.avif":"65917797e511c9033b3e225eb5d84f3c0440b7a496d4b8ab5674e123ad68aab7","link-u-avif-sample-images/plum-blossom-large.profile0.8bpc.yuv420.alpha-limited.avif":"f4809df9188fa46ed100f63c78c4cf42559d90a98351a8f69e177385920672b4","link-u-avif-sample-images/plum-blossom-large.profile0.8bpc.yuv420.alpha-limited.monochrome.avif":"dffc213dc36f0b5ff3d86254f5185c2d1fb03380918a8fa39d186fb59cbba7cc","link-u-avif-sample-images/plum-blossom-large.profile1.10bpc.yuv444.alpha-full.avif":"0a615cfb673ab45e37da3582c17dd36f86d5da3d81246a32951d1db4ed90149d","link-u-avif-sample-images/plum-blossom-large.profile1.10bpc.yuv444.alpha-limited.avif":"d1cc6a0db116a68e229676b289e8ced84d42a9f0e8d3ccd760fc92dbeb932547","link-u-avif-sample-images/plum-blossom-large.profile1.8bpc.yuv444.alpha-full.avif":"8626cf0b2c60fee51cf1df7fe4d8a18081b72e3604f7d3ff14cc5a35581927d9","link-u-avif-sample-images/plum-blossom-large.profile1.8bpc.yuv444.alpha-limited.avif":"56bf18e4bcbfbea460c306ab900fc506169854d2b91690e1a48156a86fff3264","link-u-avif-sample-images/plum-blossom-large.profile2.10bpc.yuv422.alpha-full.avif":"b56f3c33797e4c5bb80418ae25f6f2c6fc88ddc1f6965d82abc44059f052f36c","link-u-avif-sample-images/plum-blossom-large.profile2.10bpc.yuv422.alpha-full.monochrome.avif":"c3c6db4ce801c68e2afd7bfb72abacc13287cc2e247917a817ff5632bd4b18fb","link-u-avif-sample-images/plum-blossom-large.profile2.10bpc.yuv422.alpha-limited.avif":"095f57fff1dc037a6414c60263415dcfa86b10d81f58e8e4c3aef17cffae0e5f","link-u-avif-sample-images/plum-blossom-large.profile2.10bpc.yuv422.alpha-limited.monochrome.avif":"ba3035a69296d12f47d1c450f2de8cc0c9059ebbf27bb8b0996ff6d1ab1132a1","link-u-avif-sample-images/plum-blossom-large.profile2.12bpc.yuv420.alpha-full.avif":"a9551e1963049b874216b40aaf9be45bc44dc11887770712b77240862c6c08a9","link-u-avif-sample-images/plum-blossom-large.profile2.12bpc.yuv420.alpha-full.monochrome.avif":"a8a0ba881cd0aef45a5874f412e97812ca457eaf12e56b34bac2ba051e142828","link-u-avif-sample-images/plum-blossom-large.profile2.12bpc.yuv420.alpha-limited.avif":"6891b5bdbed7f541c673c66cec4584b191bb737a49b37cca16ae069830890b42","link-u-avif-sample-images/plum-blossom-large.profile2.12bpc.yuv420.alpha-limited.monochrome.avif":"67e66826637e349e1c3c46316c7048d152aed8453d8cdd00c6b786f87fe176d8","link-u-avif-sample-images/plum-blossom-large.profile2.12bpc.yuv422.alpha-full.avif":"a466503110f60dcadaafe78c2cb0a8ca58334c22868efe428c7ac12b69407c95","link-u-avif-sample-images/plum-blossom-large.profile2.12bpc.yuv422.alpha-full.monochrome.avif":"a8a0ba881cd0aef45a5874f412e97812ca457eaf12e56b34bac2ba051e142828","link-u-avif-sample-images/plum-blossom-large.profile2.12bpc.yuv422.alpha-limited.avif":"061b4c70707e7fc8866580656cca7ca2da2263645829a564dbf8f205d639f058","link-u-avif-sample-images/plum-blossom-large.profile2.12bpc.yuv422.alpha-limited.monochrome.avif":"67e66826637e349e1c3c46316c7048d152aed8453d8cdd00c6b786f87fe176d8","link-u-avif-sample-images/plum-blossom-large.profile2.12bpc.yuv444.alpha-full.avif":"4a03c8bcfcaadccdeb07432ed80680b06aba5ae5e616fc370b376acb478f6cd1","link-u-avif-sample-images/plum-blossom-large.profile2.12bpc.yuv444.alpha-full.monochrome.avif":"a8a0ba881cd0aef45a5874f412e97812ca457eaf12e56b34bac2ba051e142828","link-u-avif-sample-images/plum-blossom-large.profile2.12bpc.yuv444.alpha-limited.avif":"376625ce4e7ec3b57344a9f2185a34975fe380774c9f8e0dd4ef61c46da94fca","link-u-avif-sample-images/plum-blossom-large.profile2.12bpc.yuv444.alpha-limited.monochrome.avif":"67e66826637e349e1c3c46316c7048d152aed8453d8cdd00c6b786f87fe176d8","link-u-avif-sample-images/plum-blossom-large.profile2.8bpc.yuv422.alpha-full.avif":"1e17b7dd8e351cb667bc6ec0b81fdebca9fd30ad5e588b3eac57bf9f90a9b58b","link-u-avif-sample-images/plum-blossom-large.profile2.8bpc.yuv422.alpha-full.monochrome.avif":"f77588d2ff39e4461869a95ca236efdf4a3fdc17b8a6e3907e63b417e56c81b5","link-u-avif-sample-images/plum-blossom-large.profile2.8bpc.yuv422.alpha-limited.avif":"f2eabd3fc2db07b361d55b5af63023d28b5bdd0047a665e9d0685651ce9db94b","link-u-avif-sample-images/plum-blossom-large.profile2.8bpc.yuv422.alpha-limited.monochrome.avif":"dd88c377b253d689bfd4600d7c3007448df0ed92f679b661d5d51e051a6916d8","link-u-avif-sample-images/plum-blossom-small.png":"c859fd97b647e494461f65835b9c1c3476807aee77076599adf18a832b3617a4","link-u-avif-sample-images/plum-blossom-small.profile0.10bpc.yuv420.alpha-full.avif":"fe3379620f983e5da4210b0f7c5d164e86208b34106d6b11d56e2b52beee5dfe","link-u-avif-sample-images/plum-blossom-small.profile0.10bpc.yuv420.alpha-full.monochrome.avif":"9e6234686053dba2e44bb32192c641074095a61e45aa1bede85bb83751e6e157","link-u-avif-sample-images/plum-blossom-small.profile0.10bpc.yuv420.alpha-limited.avif":"60ffa59dd007aea3bb596cfb03853b3dad490b1ffd10471ad4fe1901ec819907","link-u-avif-sample-images/plum-blossom-small.profile0.10bpc.yuv420.alpha-limited.monochrome.avif":"58abfa027525aca7339a705f311bc30b000aef9822c7c50b232894ece1ba9cb1","link-u-avif-sample-images/plum-blossom-small.profile0.8bpc.yuv420.alpha-full.avif":"541ca66a11b1430d11f77b74a13f859239a3bd9f44976b8dfe163c5d7595a69f","link-u-avif-sample-images/plum-blossom-small.profile0.8bpc.yuv420.alpha-full.monochrome.avif":"6d7852c63c27a77bef94443e178ecf6b6a3da8cc846f9f0c1adc17f7fc35e1f3","link-u-avif-sample-images/plum-blossom-small.profile0.8bpc.yuv420.alpha-limited.avif":"3712216ffc7edb95a976b68469ead533fda6fe9f3d2e8cb09cbdb0d01d9c094b","link-u-avif-sample-images/plum-blossom-small.profile0.8bpc.yuv420.alpha-limited.monochrome.avif":"59672af536b169ebf7e48129167dc91cb253925517c37db28b64539f7afba5d3","link-u-avif-sample-images/plum-blossom-small.profile1.10bpc.yuv444.alpha-full.avif":"561d5158425ad39425916a3be048b0202e82efef44cf1a9f711db57192d2ff01","link-u-avif-sample-images/plum-blossom-small.profile1.10bpc.yuv444.alpha-limited.avif":"88336f29457c1dc4ae0b754ef14b791de4d8c337f2b44d7960aafcca08a5586e","link-u-avif-sample-images/plum-blossom-small.profile1.8bpc.yuv444.alpha-full.avif":"245a3dad6371dc702f29eb7e9735f843b63c525da871859728bedbe5bb274985","link-u-avif-sample-images/plum-blossom-small.profile1.8bpc.yuv444.alpha-limited.avif":"490c216b5850c670f6088ee72c7fd906102b2dd0c8432c01a517b3328db27c75","link-u-avif-sample-images/plum-blossom-small.profile2.10bpc.yuv422.alpha-full.avif":"0d0bbbcb0c9ade1c827317a6409ce6ba25027b36da1b6752379a5f5d4c8af056","link-u-avif-sample-images/plum-blossom-small.profile2.10bpc.yuv422.alpha-full.monochrome.avif":"418a9d4b7dcbc1f67fc4b95ccb2e7946c446fddd35a79f0d587b3f2165cb3f14","link-u-avif-sample-images/plum-blossom-small.profile2.10bpc.yuv422.alpha-limited.avif":"a41dcfabb3795ed93a05881a91bf4d1c5d1b9b0e5d0db728f12684b12613e0c9","link-u-avif-sample-images/plum-blossom-small.profile2.10bpc.yuv422.alpha-limited.monochrome.avif":"4b6a18f4f608d1b00598e67c1c91a4e8f4943ae5acf0166ae0121cc21f3b7437","link-u-avif-sample-images/plum-blossom-small.profile2.12bpc.yuv420.alpha-full.avif":"5e6b83adee3aeac4bba3f38e854e2ed7585aa1557a74b5fa66596098c53e26f2","link-u-avif-sample-images/plum-blossom-small.profile2.12bpc.yuv420.alpha-full.monochrome.avif":"fb0937564c08f4e1c22ebbde426a0eff6a1d388434c30148bc7e5582dc378caa","link-u-avif-sample-images/plum-blossom-small.profile2.12bpc.yuv420.alpha-limited.avif":"f42e780bff644167e27525fee65b23e70814f7665ea19b6d693eb127c5eeebd8","link-u-avif-sample-images/plum-blossom-small.profile2.12bpc.yuv420.alpha-limited.monochrome.avif":"d41ead1d69d33d0cf5f6fe575beb5f60d9565300c535f9042113dd8a748c1d31","link-u-avif-sample-images/plum-blossom-small.profile2.12bpc.yuv422.alpha-full.avif":"c6ee9234ee7783d0203f9512e3cc8fe76a694675bcf03c320ff8bab4684bd4e9","link-u-avif-sample-images/plum-blossom-small.profile2.12bpc.yuv422.alpha-full.monochrome.avif":"fb0937564c08f4e1c22ebbde426a0eff6a1d388434c30148bc7e5582dc378caa","link-u-avif-sample-images/plum-blossom-small.profile2.12bpc.yuv422.alpha-limited.avif":"21e1e51fc6da66e090e12e1df5aeabf1f478df64bcb8151caaa687ad262bdd9d","link-u-avif-sample-images/plum-blossom-small.profile2.12bpc.yuv422.alpha-limited.monochrome.avif":"d41ead1d69d33d0cf5f6fe575beb5f60d9565300c535f9042113dd8a748c1d31","link-u-avif-sample-images/plum-blossom-small.profile2.12bpc.yuv444.alpha-full.avif":"dfed73d646d7159d3ee4f9ce95ea628fdd33bf8bf1bb02a83d88302d088f4d97","link-u-avif-sample-images/plum-blossom-small.profile2.12bpc.yuv444.alpha-full.monochrome.avif":"fb0937564c08f4e1c22ebbde426a0eff6a1d388434c30148bc7e5582dc378caa","link-u-avif-sample-images/plum-blossom-small.profile2.12bpc.yuv444.alpha-limited.avif":"5539cd575256772ba31d6e87cb0136d5f465f84b041a4677b1023cfd6bee9956","link-u-avif-sample-images/plum-blossom-small.profile2.12bpc.yuv444.alpha-limited.monochrome.avif":"d41ead1d69d33d0cf5f6fe575beb5f60d9565300c535f9042113dd8a748c1d31","link-u-avif-sample-images/plum-blossom-small.profile2.8bpc.yuv422.alpha-full.avif":"f205cf2c05265b84e45ceb723e9a3707fd8749130166d4797e64c8c62b497f8c","link-u-avif-sample-images/plum-blossom-small.profile2.8bpc.yuv422.alpha-full.monochrome.avif":"ad2244cb7b2ac487a5104d6e5a07270f9ceb2550e4d56d3662fcc1868910ced5","link-u-avif-sample-images/plum-blossom-small.profile2.8bpc.yuv422.alpha-limited.avif":"7ef9468effdc970e4e6e8cc7533d66dc967686e357dda3dda186c021f9e6156b","link-u-avif-sample-images/plum-blossom-small.profile2.8bpc.yuv422.alpha-limited.monochrome.avif":"3dd34d854ff83b6e27a2bf98301380a6cac272084ed863735285ab5dc8acda00","link-u-avif-sample-images/plum-blossom.svg":"be1f03dd05f63292c85a96b1c48fb06727283610cc69b1e116d547bab27b171d","link-u-avif-sample-images/red-at-12-oclock-with-color-profile-10bpc.avif":"5842951d81118d256962384e08a986816e8ade6b05530269f0208c6b69cedb3b","link-u-avif-sample-images/red-at-12-oclock-with-color-profile-12bpc.avif":"1f0c9f36d69b9aa13eff3897ada3e78b81099c613b329a402c27e09453e7e261","link-u-avif-sample-images/red-at-12-oclock-with-color-profile-8bpc.avif":"3e6f2f4016e66e3c94707eaa8373e6f582321e005964cd35b64bc183e1bf10ea","link-u-avif-sample-images/red-at-12-oclock-with-color-profile-lossy.avif":"79483242f2dca12c4ec18bd33ff8099216b3094fb55a26a909f046b2f9b4ce58","link-u-avif-sample-images/red-at-12-oclock-with-color-profile.jpg":"d56f809ea5eda74578af57e2f80b41856a1fe2ff436c741aa58757387af998bd","link-u-avif-sample-images/red-at-12-oclock-with-color-profile.png":"4eab95e358eb48e052c7b8c94d30a8c6cb1c9c3c2dfd9845240281dd5dd7b800","link-u-avif-sample-images/scripts/compare.sh":"0562689bcd40e9fc1322bf037d6f999aa4406a2229f19e74b96cc450e370e429","link-u-avif-sample-images/star-10bpc-with-alpha.avifs":"5643ac1f235ae6599186dd66c66507db6fa46a17b2b18e82ea9344870eb98a9b","link-u-avif-sample-images/star-10bpc.avifs":"c61d899a59dbd8c7b2f7bcfca9069a0e13ff1606899af227938a28502e6cbf88","link-u-avif-sample-images/star-12bpc-with-alpha.avifs":"88a350c3550ce36c1777fe7eb1e906c6829d3ed8b241aa1e0e46f1a4e2567c4b","link-u-avif-sample-images/star-12bpc.avifs":"c1a59db6f180208a3177d77c7f9ab08290e903c7bdaf929331b807a510f8c619","link-u-avif-sample-images/star-8bpc-with-alpha.avifs":"13a12908cb162a855cccc9221a5f9f736e8ea07902ffbdcf007f8fde5ed255f2","link-u-avif-sample-images/star-8bpc.avifs":"ae35b161de67a5afeb195ee401f369c34990f0ff8662f70ab4065bc6931f0a66","link-u-avif-sample-images/star.gif":"389cdd02efbdce4f0205cae6e91c1f64e34fa0ca1fe02351da1b37e16cbb642a","link-u-avif-sample-images/star.input.txt":"970163b942843618616f42233abe91d40fb68f6f5451860db259551711867b55","link-u-avif-sample-images/star.png":"18569167cf7ebd265ab6973d071d259aacfbb46c0408b7d4874c8cc9df9bb1ad","link-u-avif-sample-images/star.svg":"13089d0986b31b87919029fa69f2b68981af4023306bf0f79922f6772396008a","link-u-avif-sample-images/star180.png":"21bc11be2b51334fe4589634507612e7edce96d36e6a99219d029e440164e8b8","link-u-avif-sample-images/star270.png":"5c93f538dcdc70840b9925b4089083acc9c25e95265b3f3dea18d695451b441e","link-u-avif-sample-images/star90.png":"2defc5d21e70447653fec5dc14a697d9dd555d7a0c14e79cb2d9f80796a51a6d","src/boxes.rs":"270a3e3bf90279bfc83f95acadaba9611c25243280bca71dfa9c044d5441cf15","src/lib.rs":"a88d6cc10ec1322b53a8f4c782b5133135ace0fdfcf03d1624b768788e17be0f","src/macros.rs":"76c840f9299797527fe71aa5b378ffb01312767372b45cc62deddb19775400ae","src/tests.rs":"75fe5467109242b2cc7991f8228e2e2ad1de5be2f29272a4a7f08c4e21ab5fa4","src/unstable.rs":"c2cef9a3b2b08a4da66fa0305fce7a117bd99c9b8d57b0a044e1d99dbda6faf5","tests/1x1-black-alpha-50pct-premultiplied.avif":"31a8c235bf2cf601a593a7bc33f7f2779f2d5b2e0cd145897b931fce94b0c0b8","tests/a1lx.avif":"81a784c568e7619bd47c4e7153181e9a86c8a03221097aa63979f97affd7efbb","tests/a1op.avif":"184e50efd3ad226800c610da7bc470d29b548d9fa942fd1fd1848ed02e2e5f0a","tests/alpha_video_avif_major_avis_compatible.avif":"81771981248c4e0d708f0828eadb20e9e37e7c21280efe5726666958f899c237","tests/alpha_video_fixed.avif":"67051d1a4ccf9f3e38d4514d8a6b3a2e07f1beb979369cabdc60881a698a36ac","tests/alpha_video_no_avis.avif":"a95f0e7c818bc5bf646143cf43474b70722e17669d4f2a32874c125936207d6a","tests/amr_nb_1f.3gp":"d1423e3414ad06b69f8b58d5c916ec353ba2d0402d99dec9f1c88acc33b6a127","tests/amr_wb_1f.3gp":"be635b24097e8757b0c04d70ab28e00417ca113e86108b6c269b79b64b89bcd5","tests/av1C-missing-essential.avif":"a1501254c4071847b2269fe40b81409c389ff14e91cf7c0005a47e6ea97a6803","tests/bad-ipma-flags.avif":"ecde7997b97db1910b9dcc7ca8e3c8957da0e83681ea9008c66dc9f12b78ad19","tests/bad-ipma-version.avif":"7f9a1a0b4ebbf8d800d22eaae5ff78970cc6b811317db6c1467c6883952b7c9b","tests/bbb_sunflower_QCIF_30fps_h263_noaudio_1f.3gp":"03e5b1264d0a188d77b9e676ba3ce23a801b17aaa11c0343dfd851d6ea4e3a40","tests/clap-basic-1_3x3-to-1x1.avif":"83af9c8196fa93b2475163585a23d0eb5a8f8015d0db8da7a5d6de61adfb1876","tests/clap-missing-essential.avif":"4d61aacd2327661a456abc76d3d490e5ddd2b6f8cbfa52922a6c541c9d983193","tests/clusterfuzz-testcase-minimized-mp4-6093954524250112":"af7044a470732d4e7e34ac7ab5ff038c58b66f09702cbcd774931d7766bbfd35","tests/corrupt/a1lx-marked-essential.avif":"0d481240222450827ea335ae9a1a300777a0db4f9b0f4c17ed77c758c5133fa3","tests/corrupt/a1op-missing-essential.avif":"33c24d54f43f1a7be7a8334718881c8a0de24730c997c7842b9d7140e75017ea","tests/corrupt/alpha_video_moov_is_moop.avif":"89e0091edd6efc2c5b163525553c5abc56263fe1b3b885184bb07b9ea4bf346d","tests/corrupt/bug-1655846.avif":"e0a5a06225800fadf05f5352503a4cec11af73eef705c43b4acab5f4a99dea50","tests/corrupt/bug-1661347.avif":"31c26561e1d9eafb60f7c5968b82a0859d203d73f17f26b29276256acee12966","tests/corrupt/clusterfuzz-testcase-minimized-avif-4914209301856256.avif":"34a142c7916e314881f3fb6394add1c543fac0e5b45109e3a425eeb4c68998d0","tests/corrupt/hdlr-not-first.avif":"2c29308af077209b9c984921b7e36f8fb7ca7cf379cf8eba4c7a91f65bc7a304","tests/corrupt/hdlr-not-pict.avif":"9fe37619606645a95725300a9e34fada9190d1e0b3919881db84353941ca9291","tests/corrupt/imir-before-clap.avif":"22d6b5dacf0ef0be59053beba7564b08037fed859ada2885e3476e0ff0d19c95","tests/corrupt/invalid-avif-colr-multiple-nclx.avif":"7990a995855120dc4f724a6098816595becc35077fcd9e0de8c68300b49c4f1f","tests/corrupt/invalid-avif-colr-multiple-prof.avif":"b077a6b58e3a13ad743ee3f19fbae53b521eab8727606e0dba9bf06384f3121c","tests/corrupt/invalid-avif-colr-multiple-rICC.avif":"88b24d4d588744b9f2cdc03944f28283e9315eb3de7d7d57773a0541137f6529","tests/corrupt/invalid-avif-colr-multiple.zip":"9abddcbc47fde6da20263a29b770c6a9e76c8ab8dc785ef8512f35d9cb3206ed","tests/corrupt/ipma-duplicate-item_id.avif":"ca8c5275b0b8b79c1068489a52d0a5c8f0b4453463971e72b694189f11c10745","tests/corrupt/ipma-duplicate-version-and-flags.avif":"cf8e15ec4b210235f3d68332a1adeb64e35c41b8d8e1e7586ae38b6d9cd8926c","tests/corrupt/ipma-invalid-property-index.avif":"2480e773fa716d22883032d05fd4cf2c6b00fba8796cf4ff286a5d1ba26adff6","tests/corrupt/lsel-missing-essential.avif":"43c3b1e4c4acecd7559a9a7197a7befd43c71705748f0f8c063bca3be1c6d074","tests/corrupt/no-alpha-av1C.avif":"ad3d34d6331db7d9bea0c5f37efb88923520e33e08e7c636a5df435a4575eae7","tests/corrupt/no-av1C.avif":"eeb4fc50930c91465999f787c4a2a3b12de20556da0857be72da5a1a9eaa3f01","tests/corrupt/no-ftyp.avif":"74b431f32b2e2761e77df7fdb260f623b4e8f7e3f4c8af8a42d6826911706d7b","tests/corrupt/no-hdlr.avif":"91a1eb70c7b6adf2104e471d7deeeb98084a591d64ce09ba106c27edfbc3a409","tests/corrupt/no-ispe.avif":"4b6edfd8c9b40c25dc40305a6057e32b5e65f40da4a9d810c58dbff53254113f","tests/corrupt/no-pitm.avif":"7960eeb9e6e5140fbe5eb6d281e6974efd6c3c0147562f3dcf06f6b009dc540a","tests/corrupt/no-pixi-for-alpha.avif":"f8adc3573c79ee25bf6d4dd2693c61661469b28f86a5c7b1d9e41b0e8d2d53bb","tests/corrupt/no-pixi.avif":"4b1776def440dc8b913c170e4479772ee6bbb299b8679f7c564704bd03c9597e","tests/hdlr-nonzero-reserved.avif":"b872dcd7b4f49c6808d6da109cf4fedc26a237c42e8529c5aa8f7130abaf40a9","tests/imir-missing-essential.avif":"b1226e4b1358528befbd3f1126b5caf0c5051b4354777b87e71f6001f3829f87","tests/invalid-avif-hdlr-name-multiple-nul.avif":"0d3e4a6ce42154ee288c18339c2b59ff2104fd890cd2d616e5dbf26375a90e98","tests/irot-missing-essential.avif":"b7da1fc1d1b45bb1b7ca3494476e052f711d794a6d010df6870872ed8b9da10e","tests/lsel.avif":"ef8ba6827709f48cd45f749efb580129162d9599ea98f3363d2140957502d806","tests/multiple-extents.avif":"b5549ac68793e155a726d754e565cea0da03fa17833d3545f45c79e13f4c9360","tests/no-mif1.avif":"1442aa6ffaeb9512724287768bfd1850d3aa29a651ef05abb33e5dec2b3ee5c2","tests/overflow.rs":"16b591d8def1a155b3b997622f6ea255536870d99c3d8f97c51755b77a50de3c","tests/public.rs":"8918d5190a36c697445aa4b140a31cd3032582f1e504b4c2527f75a2155f80ae","tests/valid-alpha.avif":"9d417a35b9b62ad3ff66ffbc55f16552aacf821a092aa5ef4adff7e746bd4c2f","tests/valid-avif-colr-nclx-and-prof-and-rICC.avif":"ab6f5e786d26f8bcade5993f8b9cca3cd004a3d7fcec76e829f5d0f98cb18e7b","tests/valid-avif-colr-nclx-and-prof.avif":"0e982818de61869fcb85a2a4c2b7b8aeecb3053cbfdc6276987f91204998eefb","tests/valid-avif-colr-nclx-and-rICC.avif":"8530ef1305ff956a0c2912d0b3d1e0fc3a68cf3103e70b04cc2574530389b030","tests/valid-avif-colr-nclx.avif":"345ab58b7b1cb48aba2e21eb8dc5ab0a751a78a752ce1896c59b4bf361992f38","tests/valid-avif-colr-prof-and-rICC.avif":"1f0f085141106885bda78b0879c768818420d8196b39440a36578456a7d50a6c","tests/valid-avif-colr-prof.avif":"5d7aaefb5204ebe1cc296456866b8e46e023748b921a38ee56fd6c776a9733ff","tests/valid-avif-colr-rICC.avif":"e1c7b49bfad5904b484bd5118e6b33b78e2dc708a31a10fcbb0e4a373ed8dbb7","tests/valid.avif":"f0b33e09bf01232e0877df325f47986c0bee7764f2a81c9c908ae109e7dc63c4"},"package":null} -\ No newline at end of file ---- thunderbird-102.11.1/third_party/rust/mp4parse/src/lib.rs.mp4parse-rust-8b5b652d38e007e736bb442ccd5aa5ed699db100 2023-05-24 00:50:52.000000000 +0200 -+++ thunderbird-102.11.1/third_party/rust/mp4parse/src/lib.rs 2023-06-08 14:17:40.193695212 +0200 -@@ -3184,8 +3184,13 @@ macro_rules! impl_mul { - type Output = $output; - - fn mul(self, rhs: $rhs) -> Self::Output { -- static_assertions::const_assert!(<$output>::MAX <= <$inner>::MAX as u64); -- static_assertions::const_assert!(<$lhs>::MAX * <$rhs>::MAX <= <$output>::MAX); -+ static_assertions::const_assert!( -+ <$output as UpperBounded>::MAX <= <$inner>::MAX as u64 -+ ); -+ static_assertions::const_assert!( -+ <$lhs as UpperBounded>::MAX * <$rhs as UpperBounded>::MAX -+ <= <$output as UpperBounded>::MAX -+ ); - - let lhs: $inner = self.get().into(); - let rhs: $inner = rhs.get().into(); diff --git a/rhbz-1173156.patch b/rhbz-1173156.patch deleted file mode 100644 index 9750861..0000000 --- a/rhbz-1173156.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up a/extensions/auth/nsAuthSambaNTLM.cpp.old b/extensions/auth/nsAuthSambaNTLM.cpp ---- a/extensions/auth/nsAuthSambaNTLM.cpp.old 2014-11-25 12:23:22.000000000 +0100 -+++ b/extensions/auth/nsAuthSambaNTLM.cpp 2014-12-23 15:26:36.606674625 +0100 -@@ -161,7 +161,7 @@ - const char* username = PR_GetEnv("USER"); - if (!username) return NS_ERROR_FAILURE; - -- const char* const args[] = {"ntlm_auth", -+ const char* const args[] = {"/usr/bin/ntlm_auth", - "--helper-protocol", - "ntlmssp-client-1", - "--use-cached-creds", diff --git a/rhbz-1219542-s390-build.patch b/rhbz-1219542-s390-build.patch deleted file mode 100644 index f94e43a..0000000 --- a/rhbz-1219542-s390-build.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff -up firefox-55.0/js/src/old-configure.in.rhbz-1219542-s390 firefox-55.0/js/src/old-configure.in ---- firefox-55.0/js/src/old-configure.in.rhbz-1219542-s390 2017-07-31 18:20:48.000000000 +0200 -+++ firefox-55.0/js/src/old-configure.in 2017-08-02 14:31:32.190243669 +0200 -@@ -541,7 +541,7 @@ case "$host" in - - *-linux*|*-kfreebsd*-gnu|*-gnu*) - HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX" -- HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}" -+ HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O1}" - ;; - - *) -@@ -617,8 +617,8 @@ case "$target" in - - *-*linux*) - if test "$GNU_CC" -o "$GNU_CXX"; then -- MOZ_PGO_OPTIMIZE_FLAGS="-O3" -- MOZ_OPTIMIZE_FLAGS="-O3" -+ MOZ_PGO_OPTIMIZE_FLAGS="-O1" -+ MOZ_OPTIMIZE_FLAGS="-O1" - if test -z "$CLANG_CC"; then - MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS" - fi diff --git a/run-wayland-compositor b/run-wayland-compositor index 0480ed2..23ead19 100755 --- a/run-wayland-compositor +++ b/run-wayland-compositor @@ -20,21 +20,24 @@ if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then # if not found, launch a new one eval `dbus-launch --sh-syntax` fi -eval `echo '' | /usr/bin/gnome-keyring-daemon -r -d --unlock --components=secrets` if [ -z "$XDG_RUNTIME_DIR" ]; then export XDG_RUNTIME_DIR=$HOME fi -. xvfb-run -s "-screen 0 1600x1200x24" -n 80 mutter --display=:80 --wayland --nested & -export DISPLAY=:80 - -if [ -z "$WAYLAND_DISPLAY" ] ; then - export WAYLAND_DISPLAY=wayland-0 -else - export WAYLAND_DISPLAY=wayland-1 +export WAYLAND_DISPLAY=icecat-pgo-wayland-0 +if [ -S "$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" ]; then + rm -f $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY + rm -f $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY.lock fi -sleep 10 + +echo "Launch mutter for $WAYLAND_DISPLAY" +mutter --headless --virtual-monitor 1920x1080 --wayland-display=$WAYLAND_DISPLAY --no-x11 & MUTTER_PID=$! +export MUTTER_PID +echo "Mutter PID $MUTTER_PID" + +echo "Waiting for mutter to start..." +sleep 5 retry_count=0 max_retries=5 until [ $retry_count -gt $max_retries ]; do @@ -47,4 +50,11 @@ until [ $retry_count -gt $max_retries ]; do fi done -env | grep "DISPLAY" +if [ ! -S "$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" ]; then + echo "Mutter failed to start!" + exit 1 +fi + +echo "Mutter is running, $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY is here." + + diff --git a/rust-bindgen-2319-2339.patch b/rust-bindgen-2319-2339.patch deleted file mode 100644 index fcf2ae0..0000000 --- a/rust-bindgen-2319-2339.patch +++ /dev/null @@ -1,154 +0,0 @@ ---- thunderbird-102.11.1/third_party/rust/bindgen/.cargo-checksum.json.rust-bindgen-2319-2339 2023-05-24 00:50:52.000000000 +0200 -+++ thunderbird-102.11.1/third_party/rust/bindgen/.cargo-checksum.json 2023-06-07 01:11:35.838302019 +0200 -@@ -1 +1 @@ --{"files":{"Cargo.lock":"836e8f8431bd4ebdac9b1251676f6afa755757e401455259fe659e7280be8230","Cargo.toml":"3a585a6e27a177f08dedcb21f7d555e9db58fa158203273b228db91ebee4e6b3","LICENSE":"c23953d9deb0a3312dbeaf6c128a657f3591acee45067612fa68405eaa4525db","README.md":"29fe30d7a2729922b13a578bc8f5eedc808fd0f2ef67a3f12017548baf8f293a","build.rs":"3fe1e534c99df4ee207606794f133fb187c0948e055389f74c904994ecaed38a","csmith-fuzzing/README.md":"7107b70fedb0c0a0cadb3c439a49c1bd0119a6d38dc63b1aecc74d1942256ef2","src/callbacks.rs":"1e5a118b94977938751758ac0495b1d41ce5e280c066614a4a7cbd930f326350","src/clang.rs":"aa0644278a8319506be08904c0f6706fbcdcd72eb1e85564b8c7488bd810e126","src/codegen/bitfield_unit.rs":"a8fb1a2d97a99685106fcaac87d2013f79d2690d6a46ff05ad1e3629b6075664","src/codegen/bitfield_unit_tests.rs":"dd252134118450800b516e375c872e17b4c1aee63a7b8adbe5b2cd53434bbc7e","src/codegen/dyngen.rs":"15149bc927e5b2706f93e52a6b26ef55384b3baf40bfc9bc4343e9820479f26b","src/codegen/error.rs":"5e308b8c54b68511fc8ea2ad15ddac510172c4ff460a80a265336440b0c9653d","src/codegen/helpers.rs":"ea83104addb8af31736aaeb850e10c694cd434befe7ffaaa206208f722d72c58","src/codegen/impl_debug.rs":"1ff9ec754b610c98c757b114c6509473ead0e1a9375e9089a7fa40a41a753709","src/codegen/impl_partialeq.rs":"5e526fd88dd15dd1f04addd3c6ecea1d3da92293fadf04346d6c716791f436f9","src/codegen/mod.rs":"19fd11feefab0ff9ecaf8a01583583008269adce805508fb61b9a8acc49da586","src/codegen/struct_layout.rs":"b62c3569dcfb011daa4d09f1aa9eb732da69546c3deb9f247fa8ce7114dbc7b9","src/extra_assertions.rs":"494534bd4f18b80d89b180c8a93733e6617edcf7deac413e9a73fd6e7bc9ced7","src/features.rs":"fafb85510b1dfc9a41ed71f7d765fca49b236deb4ee567e00204e751362aaf23","src/ir/analysis/derive.rs":"ff4821d810961696008a57ae496f95ebcdc14b4c439fe87d78a84817442fa759","src/ir/analysis/has_destructor.rs":"d9a3a24bd4cabc87cddb0c76d27da1691f8f37ffb8eadf5b5975a1c44dea99c2","src/ir/analysis/has_float.rs":"5242cc07ec4d4bdf5a792e1f8ee5758a87838314917d42dbb9dcfc19620520ce","src/ir/analysis/has_type_param_in_array.rs":"ec3fb67f782abb4c866da91bce3f7ee6f8e2310c47a54065282431b909233f7d","src/ir/analysis/has_vtable.rs":"63e2d0f62171811893615c11453bc7b39438d0d83c3eb444dec2346140d86efe","src/ir/analysis/mod.rs":"2c54f0cd6f3d86cf3fcb07d9d0be06cde839cab4170671c80d806a3f27820faf","src/ir/analysis/sizedness.rs":"17f1f2b6affd025f73853b9b5a76b3f157b5f9e563e9eaa374735fcb84c13308","src/ir/analysis/template_params.rs":"da949976a7fd04d6fc564ea6a77dfdbf4f5bf05db64687ed7a0616cba598a42d","src/ir/annotations.rs":"1c931d7bbba1e1613e9cccaab58d14f75e79b831b5c881e41f5b5257a9cbced7","src/ir/comment.rs":"31d64a49ae3d9c3c348fa2539e03306ca3a23fae429cab452e42b31ecf632145","src/ir/comp.rs":"abaa90e27dc6416f1b8db003f87888e7651d5b46c4d4526153980e5621612e54","src/ir/context.rs":"3a76458a5aa74075a60a5cd752ed59ad3943054f55b017700389f78072935215","src/ir/derive.rs":"e5581852eec87918901a129284b4965aefc8a19394187a8095779a084f28fabe","src/ir/dot.rs":"e25ff72ac174a798894c9673d81bdfb86fa9f4228b34a14ce0dc741a186a52bd","src/ir/enum_ty.rs":"e49e3c6ffc0289584e2f836fe56a4b7ebf6ca3f8b602248141d67b9f533770cc","src/ir/function.rs":"aa454ace56bda8074b2865933282aa124624310c8bc0c994d454f5799f4e88be","src/ir/int.rs":"68a86182743ec338d58e42203364dc7c8970cb7ec3550433ca92f0c9489b4442","src/ir/item.rs":"a71bdacc7419ec86d52ac534158cf4bfa4600e9cbc214c0075766700f5b053b0","src/ir/item_kind.rs":"7666a1ff1b8260978b790a08b4139ab56b5c65714a5652bbcec7faa7443adc36","src/ir/layout.rs":"755e3787c262de434a53a8c326f0e825f95415ed6b0f925c1cddf208ca8e3bc4","src/ir/mod.rs":"713cd537434567003197a123cbae679602c715e976d22f7b23dafd0826ea4c70","src/ir/module.rs":"70cf6ddfeabe6cdc13fdc767c783216c073404848d827e85fc6c2de3a19b5c3f","src/ir/objc.rs":"195fb2a3e4371b90244f3a8f295fd80cc77e0f2daf8fd27e3d8e5b78bd6b55d6","src/ir/template.rs":"44bd7214cf1e7f70e60694115082aac5b8a6c1687fff584cd08cdcfadabc5734","src/ir/traversal.rs":"5ac088277f4dfe2918d81b9294aaee41fd83db8e46def66a05f89de078bf4c49","src/ir/ty.rs":"8f2b970da76850685c4d334289af6dede7742862d7a81f2236115afaa1a92fa9","src/ir/var.rs":"86e9f19403fb9231ba60dec0a04e5b56fe28a37c7a5e6f676c978789c9d93c5a","src/lib.rs":"ed2d0aeb48b28b4a96b8e76a10e00b10cb6cc32c0a686d536f9021463b7ee0e8","src/log_stubs.rs":"6dfdd908b7c6453da416cf232893768f9480e551ca4add0858ef88bf71ee6ceb","src/main.rs":"74e582c37b146090332b1496f5b4bca02c7629d03a4ae40302cb4a723f08e445","src/options.rs":"119358b741601dafc13560856f6e4b4f78b6cd2b19067893c2672ba8f5dc6de1","src/parse.rs":"4ffc54415eadb622ee488603862788c78361ef2c889de25259441a340c2a010f","src/regex_set.rs":"6c46357fb1ee68250e5e017cbf691f340041489ae78599eee7a5665a6ddce27f","src/time.rs":"8efe317e7c6b5ba8e0865ce7b49ca775ee8a02590f4241ef62f647fa3c22b68e"},"package":"2da379dbebc0b76ef63ca68d8fc6e71c0f13e59432e0987e508c1820e6ab5239"} -\ No newline at end of file -+{"files":{"Cargo.lock":"836e8f8431bd4ebdac9b1251676f6afa755757e401455259fe659e7280be8230","Cargo.toml":"3a585a6e27a177f08dedcb21f7d555e9db58fa158203273b228db91ebee4e6b3","LICENSE":"c23953d9deb0a3312dbeaf6c128a657f3591acee45067612fa68405eaa4525db","README.md":"29fe30d7a2729922b13a578bc8f5eedc808fd0f2ef67a3f12017548baf8f293a","build.rs":"3fe1e534c99df4ee207606794f133fb187c0948e055389f74c904994ecaed38a","csmith-fuzzing/README.md":"7107b70fedb0c0a0cadb3c439a49c1bd0119a6d38dc63b1aecc74d1942256ef2","src/callbacks.rs":"1e5a118b94977938751758ac0495b1d41ce5e280c066614a4a7cbd930f326350","src/clang.rs":"30fdc473ff70dcbc394927d6fb674d70a62c1a3847e855becd988dc476997815","src/codegen/bitfield_unit.rs":"a8fb1a2d97a99685106fcaac87d2013f79d2690d6a46ff05ad1e3629b6075664","src/codegen/bitfield_unit_tests.rs":"dd252134118450800b516e375c872e17b4c1aee63a7b8adbe5b2cd53434bbc7e","src/codegen/dyngen.rs":"15149bc927e5b2706f93e52a6b26ef55384b3baf40bfc9bc4343e9820479f26b","src/codegen/error.rs":"5e308b8c54b68511fc8ea2ad15ddac510172c4ff460a80a265336440b0c9653d","src/codegen/helpers.rs":"ea83104addb8af31736aaeb850e10c694cd434befe7ffaaa206208f722d72c58","src/codegen/impl_debug.rs":"1ff9ec754b610c98c757b114c6509473ead0e1a9375e9089a7fa40a41a753709","src/codegen/impl_partialeq.rs":"5e526fd88dd15dd1f04addd3c6ecea1d3da92293fadf04346d6c716791f436f9","src/codegen/mod.rs":"19fd11feefab0ff9ecaf8a01583583008269adce805508fb61b9a8acc49da586","src/codegen/struct_layout.rs":"b62c3569dcfb011daa4d09f1aa9eb732da69546c3deb9f247fa8ce7114dbc7b9","src/extra_assertions.rs":"494534bd4f18b80d89b180c8a93733e6617edcf7deac413e9a73fd6e7bc9ced7","src/features.rs":"fafb85510b1dfc9a41ed71f7d765fca49b236deb4ee567e00204e751362aaf23","src/ir/analysis/derive.rs":"ff4821d810961696008a57ae496f95ebcdc14b4c439fe87d78a84817442fa759","src/ir/analysis/has_destructor.rs":"d9a3a24bd4cabc87cddb0c76d27da1691f8f37ffb8eadf5b5975a1c44dea99c2","src/ir/analysis/has_float.rs":"5242cc07ec4d4bdf5a792e1f8ee5758a87838314917d42dbb9dcfc19620520ce","src/ir/analysis/has_type_param_in_array.rs":"ec3fb67f782abb4c866da91bce3f7ee6f8e2310c47a54065282431b909233f7d","src/ir/analysis/has_vtable.rs":"63e2d0f62171811893615c11453bc7b39438d0d83c3eb444dec2346140d86efe","src/ir/analysis/mod.rs":"2c54f0cd6f3d86cf3fcb07d9d0be06cde839cab4170671c80d806a3f27820faf","src/ir/analysis/sizedness.rs":"17f1f2b6affd025f73853b9b5a76b3f157b5f9e563e9eaa374735fcb84c13308","src/ir/analysis/template_params.rs":"da949976a7fd04d6fc564ea6a77dfdbf4f5bf05db64687ed7a0616cba598a42d","src/ir/annotations.rs":"1c931d7bbba1e1613e9cccaab58d14f75e79b831b5c881e41f5b5257a9cbced7","src/ir/comment.rs":"31d64a49ae3d9c3c348fa2539e03306ca3a23fae429cab452e42b31ecf632145","src/ir/comp.rs":"232300be66abbbc3d7ef948c24f000dd8a50d78e72aa0e4b2cc43ffd4f800226","src/ir/context.rs":"3a76458a5aa74075a60a5cd752ed59ad3943054f55b017700389f78072935215","src/ir/derive.rs":"e5581852eec87918901a129284b4965aefc8a19394187a8095779a084f28fabe","src/ir/dot.rs":"e25ff72ac174a798894c9673d81bdfb86fa9f4228b34a14ce0dc741a186a52bd","src/ir/enum_ty.rs":"e49e3c6ffc0289584e2f836fe56a4b7ebf6ca3f8b602248141d67b9f533770cc","src/ir/function.rs":"aa454ace56bda8074b2865933282aa124624310c8bc0c994d454f5799f4e88be","src/ir/int.rs":"68a86182743ec338d58e42203364dc7c8970cb7ec3550433ca92f0c9489b4442","src/ir/item.rs":"a71bdacc7419ec86d52ac534158cf4bfa4600e9cbc214c0075766700f5b053b0","src/ir/item_kind.rs":"7666a1ff1b8260978b790a08b4139ab56b5c65714a5652bbcec7faa7443adc36","src/ir/layout.rs":"755e3787c262de434a53a8c326f0e825f95415ed6b0f925c1cddf208ca8e3bc4","src/ir/mod.rs":"713cd537434567003197a123cbae679602c715e976d22f7b23dafd0826ea4c70","src/ir/module.rs":"70cf6ddfeabe6cdc13fdc767c783216c073404848d827e85fc6c2de3a19b5c3f","src/ir/objc.rs":"195fb2a3e4371b90244f3a8f295fd80cc77e0f2daf8fd27e3d8e5b78bd6b55d6","src/ir/template.rs":"44bd7214cf1e7f70e60694115082aac5b8a6c1687fff584cd08cdcfadabc5734","src/ir/traversal.rs":"5ac088277f4dfe2918d81b9294aaee41fd83db8e46def66a05f89de078bf4c49","src/ir/ty.rs":"8d7e7883316245c54e5dfa2fd150df1be2dc559c7df0828da736dd6b18d2165b","src/ir/var.rs":"1e7be8eedba72effa995b48c581504e61e407867d8794a8528975688742b0420","src/lib.rs":"ed2d0aeb48b28b4a96b8e76a10e00b10cb6cc32c0a686d536f9021463b7ee0e8","src/log_stubs.rs":"6dfdd908b7c6453da416cf232893768f9480e551ca4add0858ef88bf71ee6ceb","src/main.rs":"74e582c37b146090332b1496f5b4bca02c7629d03a4ae40302cb4a723f08e445","src/options.rs":"119358b741601dafc13560856f6e4b4f78b6cd2b19067893c2672ba8f5dc6de1","src/parse.rs":"4ffc54415eadb622ee488603862788c78361ef2c889de25259441a340c2a010f","src/regex_set.rs":"6c46357fb1ee68250e5e017cbf691f340041489ae78599eee7a5665a6ddce27f","src/time.rs":"8efe317e7c6b5ba8e0865ce7b49ca775ee8a02590f4241ef62f647fa3c22b68e"},"package":"2da379dbebc0b76ef63ca68d8fc6e71c0f13e59432e0987e508c1820e6ab5239"} -\ No newline at end of file ---- thunderbird-102.11.1/third_party/rust/bindgen/src/clang.rs.rust-bindgen-2319-2339 2023-05-24 00:50:51.000000000 +0200 -+++ thunderbird-102.11.1/third_party/rust/bindgen/src/clang.rs 2023-06-07 00:59:18.845709213 +0200 -@@ -54,6 +54,11 @@ impl Cursor { - unsafe { clang_isDeclaration(self.kind()) != 0 } - } - -+ /// Is this cursor's referent an anonymous record or so? -+ pub fn is_anonymous(&self) -> bool { -+ unsafe { clang_Cursor_isAnonymous(self.x) != 0 } -+ } -+ - /// Get this cursor's referent's spelling. - pub fn spelling(&self) -> String { - unsafe { cxstring_into_string(clang_getCursorSpelling(self.x)) } ---- thunderbird-102.11.1/third_party/rust/bindgen/src/ir/comp.rs.rust-bindgen-2319-2339 2023-05-24 00:50:52.000000000 +0200 -+++ thunderbird-102.11.1/third_party/rust/bindgen/src/ir/comp.rs 2023-06-07 00:59:18.846709211 +0200 -@@ -1372,8 +1372,7 @@ impl CompInfo { - - // A declaration of an union or a struct without name could - // also be an unnamed field, unfortunately. -- if cur.spelling().is_empty() && -- cur.kind() != CXCursor_EnumDecl -+ if cur.is_anonymous() && cur.kind() != CXCursor_EnumDecl - { - let ty = cur.cur_type(); - let offset = cur.offset_of_field().ok(); ---- thunderbird-102.11.1/third_party/rust/bindgen/src/ir/ty.rs.rust-bindgen-2319-2339 2023-05-24 00:50:52.000000000 +0200 -+++ thunderbird-102.11.1/third_party/rust/bindgen/src/ir/ty.rs 2023-06-07 00:59:18.847709209 +0200 -@@ -737,7 +737,12 @@ impl Type { - - let layout = ty.fallible_layout(ctx).ok(); - let cursor = ty.declaration(); -- let mut name = cursor.spelling(); -+ let is_anonymous = cursor.is_anonymous(); -+ let mut name = if is_anonymous { -+ None -+ } else { -+ Some(cursor.spelling()).filter(|n| !n.is_empty()) -+ }; - - debug!( - "from_clang_ty: {:?}, ty: {:?}, loc: {:?}", -@@ -771,7 +776,7 @@ impl Type { - if is_canonical_objcpointer && is_template_type_param { - // Objective-C generics are just ids with fancy name. - // To keep it simple, just name them ids -- name = "id".to_owned(); -+ name = Some("id".to_owned()); - } - } - -@@ -900,7 +905,7 @@ impl Type { - return Err(ParseError::Recurse); - } - } else { -- name = location.spelling(); -+ name = Some(location.spelling()); - } - - let complex = CompInfo::from_ty( -@@ -942,7 +947,7 @@ impl Type { - CXType_Typedef - ); - -- name = current.spelling(); -+ name = Some(location.spelling()); - - let inner_ty = cur - .typedef_type() -@@ -1126,10 +1131,10 @@ impl Type { - CXType_Enum => { - let enum_ = Enum::from_ty(ty, ctx).expect("Not an enum?"); - -- if name.is_empty() { -+ if !is_anonymous { - let pretty_name = ty.spelling(); - if clang::is_valid_identifier(&pretty_name) { -- name = pretty_name; -+ name = Some(pretty_name); - } - } - -@@ -1144,12 +1149,12 @@ impl Type { - ) - .expect("Not a complex type?"); - -- if name.is_empty() { -+ if !is_anonymous { - // The pretty-printed name may contain typedefed name, - // but may also be "struct (anonymous at .h:1)" - let pretty_name = ty.spelling(); - if clang::is_valid_identifier(&pretty_name) { -- name = pretty_name; -+ name = Some(pretty_name); - } - } - -@@ -1189,7 +1194,9 @@ impl Type { - CXType_ObjCClass | CXType_ObjCInterface => { - let interface = ObjCInterface::from_ty(&location, ctx) - .expect("Not a valid objc interface?"); -- name = interface.rust_name(); -+ if !is_anonymous { -+ name = Some(interface.rust_name()); -+ } - TypeKind::ObjCInterface(interface) - } - CXType_Dependent => { -@@ -1207,7 +1214,7 @@ impl Type { - } - }; - -- let name = if name.is_empty() { None } else { Some(name) }; -+ name = name.filter(|n| !n.is_empty()); - - let is_const = ty.is_const() || - (ty.kind() == CXType_ConstantArray && ---- thunderbird-102.11.1/third_party/rust/bindgen/src/ir/ty.rs.rust-bindgen-2319-2339 -+++ thunderbird-102.11.1/third_party/rust/bindgen/src/ir/ty.rs -@@ -1145,8 +1145,7 @@ impl Type { - location, - None, - ctx, -- ) -- .expect("Not able to resolve vector element?"); -+ )?; - TypeKind::Vector(inner, ty.num_elements().unwrap()) - } - CXType_ConstantArray => { ---- thunderbird-102.11.1/third_party/rust/bindgen/src/ir/var.rs.rust-bindgen-2319-2339 -+++ thunderbird-102.11.1/third_party/rust/bindgen/src/ir/var.rs -@@ -293,11 +293,11 @@ impl ClangSubItemParser for Var { - let ty = match Item::from_ty(&ty, cursor, None, ctx) { - Ok(ty) => ty, - Err(e) => { -- assert_eq!( -- ty.kind(), -- CXType_Auto, -+ assert!( -+ matches!(ty.kind(), CXType_Auto | CXType_Unexposed), - "Couldn't resolve constant type, and it \ -- wasn't an nondeductible auto type!" -+ wasn't an nondeductible auto type or unexposed \ -+ type!" - ); - return Err(e); - } diff --git a/sources b/sources index dcf9e9d..889ba13 100644 --- a/sources +++ b/sources @@ -1,5 +1,5 @@ -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 (cbindgen-vendor.tar.xz) = 647dcadf3507bd05262613d03ff18a8c876bcbb4e83ce59f911128ae020ac16695298987c6c14f8b7a7aee5bb096740c6885c0a854d8b26431fc9a8ff864c369 +SHA512 (icecat-140.7.0-langpacks.tar.gz) = a4618e3272b48be4307c79222bdd55f321aefb6d6ba08beb10178d0b95530bc4130cf86901d0906e714bd75106ad8513957fe3ad335431c8faf5b2d9767e17de +SHA512 (icecat-140.7.0-rh1.tar.bz2) = 7a19f7928322bea905828e6a4e981395687f1b649e37518a8000bcfcb29446b424ee592f708d0c7c93ebeb901820752785f883a937e9361e9f172a0a9bacb603 SHA512 (icecat-COPYING-licensefiles.tar.gz) = ed541845170f1d209e322b0def3248d571e0c42c4a17c74e83197e743bd8a128a1475f5312d905c8e70d047eddeac17e604373892eb6d5f1720c5c361849c42c SHA512 (icecat.png) = a3cec16cb15a27c3c91b53e2c534e78b07911011ff1331e450c0baf8e13b76da7cea2a90e5d75191fa88cfbfd40a0a7f3e553e92b64d0043dadd5ad5edfdf81c