From 314a048f68ce72eecd25fffa7de6afef63df0155 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 11 Apr 2024 20:45:20 +0200 Subject: [PATCH] Bundle mozjs Bundling mozjs in gjs should make it possible to remove the system wide mozjs115 package from base RHEL 10, which makes it easier in the future if we need to update gjs to use newer mozjs. At that point, we can just update gjs to the new mozjs version it needs and not have to worry about maintaining a system-wide mozjs115 for all of RHEL 10 lifetime. Adapted from the corresponding RHEL 9 change by Kalev Lember. Resolves: Resolves: RHEL-30208 --- .gitignore | 1 + ...kip-failing-tests-on-ppc64-and-s390x.patch | 36 ++++ copy-headers.patch | 38 ++++ emitter.patch | 67 ++++++ firefox-112.0-commasplit.patch | 76 +++++++ gjs.spec | 201 +++++++++++++++++- ...a-Write-command-output-to-our-stderr.patch | 44 ++++ ...y-Decouple-from-Mozilla-build-system.patch | 29 +++ init_patch.patch | 28 +++ known_failures.txt | 42 ++++ ...y-m4-detection-from-bundled-autoconf.patch | 29 +++ sources | 1 + spidermonkey_checks_disable.patch | 22 ++ tests-Use-native-TemporaryDirectory.patch | 65 ++++++ tests-increase-timeout.patch | 26 +++ 15 files changed, 703 insertions(+), 2 deletions(-) create mode 100644 0001-Skip-failing-tests-on-ppc64-and-s390x.patch create mode 100644 copy-headers.patch create mode 100644 emitter.patch create mode 100644 firefox-112.0-commasplit.patch create mode 100644 icu_sources_data-Write-command-output-to-our-stderr.patch create mode 100644 icu_sources_data.py-Decouple-from-Mozilla-build-system.patch create mode 100644 init_patch.patch create mode 100644 known_failures.txt create mode 100644 remove-sloppy-m4-detection-from-bundled-autoconf.patch create mode 100644 spidermonkey_checks_disable.patch create mode 100644 tests-Use-native-TemporaryDirectory.patch create mode 100644 tests-increase-timeout.patch diff --git a/.gitignore b/.gitignore index 04d503f..d15ca18 100644 --- a/.gitignore +++ b/.gitignore @@ -148,3 +148,4 @@ gjs-0.7.1.tar.gz /gjs-1.79.3.tar.xz /gjs-1.79.90.tar.xz /gjs-1.80.2.tar.xz +/firefox-115.7.0esr.source.tar.xz diff --git a/0001-Skip-failing-tests-on-ppc64-and-s390x.patch b/0001-Skip-failing-tests-on-ppc64-and-s390x.patch new file mode 100644 index 0000000..5c28664 --- /dev/null +++ b/0001-Skip-failing-tests-on-ppc64-and-s390x.patch @@ -0,0 +1,36 @@ +From db3a0a25b97377b388532b23e73a10d246f66496 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Franti=C5=A1ek=20Zatloukal?= +Date: Mon, 3 Aug 2020 10:27:00 +0200 +Subject: [PATCH] Skip failing tests on ppc64 and s390x + +ppc64 and s390x: non262/extensions/clone-errors.js +s390x: test262/built-ins/TypedArray/prototype/set/typedarray-arg-set-values-same-buffer-other-type.js +s390x, ppc64 and aarch64: test262/built-ins/Date/UTC/fp-evaluation-order.js +--- + js/src/tests/jstests.list | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/js/src/tests/jstests.list b/js/src/tests/jstests.list +index 73ce42f..1797646 100644 +--- a/js/src/tests/jstests.list ++++ b/js/src/tests/jstests.list +@@ -53,6 +53,15 @@ skip-if(!this.hasOwnProperty("Intl")) include test262/intl402/jstests.list + skip-if(!this.hasOwnProperty("Atomics")) include test262/built-ins/Atomics/jstests.list + skip-if(!this.hasOwnProperty("SharedArrayBuffer")) include test262/built-ins/SharedArrayBuffer/jstests.list + ++# Crashes on s390x and ppc64, avoid it ++skip-if(xulRuntime.XPCOMABI.match(/s390x|ppc64-/)) script non262/extensions/clone-errors.js ++ ++# Crashes on s390x, ppc64, aarch64 ++skip-if(xulRuntime.XPCOMABI.match(/s390x|aarch64|ppc64-/)) script test262/built-ins/Date/UTC/fp-evaluation-order.js ++ ++# Crashes on s390x, avoid it ++skip-if(xulRuntime.XPCOMABI.match(/s390x/)) script test262/built-ins/TypedArray/prototype/set/typedarray-arg-set-values-same-buffer-other-type.js ++ + ##################################### + # Test262 tests disabled on browser # + ##################################### +-- +2.31.1 + + diff --git a/copy-headers.patch b/copy-headers.patch new file mode 100644 index 0000000..dfddcfa --- /dev/null +++ b/copy-headers.patch @@ -0,0 +1,38 @@ +From 3b3c8e37cca418e07bdeceaf3a601805df28d925 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Franti=C5=A1ek=20Zatloukal?= +Date: Wed, 15 Jul 2020 08:27:39 +0200 +Subject: [PATCH] build: Copy headers on install instead of symlinking + +Patch by Philip Chimento ported forward to mozjs78 +--- + python/mozbuild/mozbuild/backend/recursivemake.py | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/python/mozbuild/mozbuild/backend/recursivemake.py b/python/mozbuild/mozbuild/backend/recursivemake.py +index 858d4d4..8c229e8 100644 +--- a/python/mozbuild/mozbuild/backend/recursivemake.py ++++ b/python/mozbuild/mozbuild/backend/recursivemake.py +@@ -1533,9 +1533,9 @@ class RecursiveMakeBackend(MakeBackend): + " of srcdir-relative or absolute paths." + ) + +- install_manifest.add_pattern_link(basepath, wild, dest_dir) ++ install_manifest.add_pattern_copy(basepath, wild, dest_dir) + else: +- install_manifest.add_pattern_link(f.srcdir, f, dest_dir) ++ install_manifest.add_pattern_copy(f.srcdir, f, dest_dir) + elif isinstance(f, AbsolutePath): + if not f.full_path.lower().endswith((".dll", ".pdb", ".so")): + raise Exception( +@@ -1546,7 +1546,7 @@ class RecursiveMakeBackend(MakeBackend): + install_manifest.add_optional_exists(dest_file) + absolute_files.append(f.full_path) + else: +- install_manifest.add_link(f.full_path, dest_file) ++ install_manifest.add_copy(f.full_path, dest_file) + else: + install_manifest.add_optional_exists(dest_file) + objdir_files.append(self._pretty_path(f, backend_file)) +-- +2.37.1 + diff --git a/emitter.patch b/emitter.patch new file mode 100644 index 0000000..8d5aafb --- /dev/null +++ b/emitter.patch @@ -0,0 +1,67 @@ +From d1d785c169345b81c76213f6dd9be32b4db60294 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Franti=C5=A1ek=20Zatloukal?= +Date: Wed, 15 Jul 2020 08:39:47 +0200 +Subject: [PATCH] Build: allow LOCAL_INCLUDES paths with topsrcdir or topobjdir + +--- + python/mozbuild/mozbuild/frontend/emitter.py | 10 --------- + .../mozbuild/test/frontend/test_emitter.py | 22 ------------------- + 2 files changed, 32 deletions(-) + +diff --git a/python/mozbuild/mozbuild/frontend/emitter.py b/python/mozbuild/mozbuild/frontend/emitter.py +index 0b7ccef..a3c7f2f 100644 +--- a/python/mozbuild/mozbuild/frontend/emitter.py ++++ b/python/mozbuild/mozbuild/frontend/emitter.py +@@ -1365,16 +1365,6 @@ class TreeMetadataEmitter(LoggingMixin): + "(resolved to %s)" % (local_include, full_path), + context, + ) +- if ( +- full_path == context.config.topsrcdir +- or full_path == context.config.topobjdir +- ): +- raise SandboxValidationError( +- "Path specified in LOCAL_INCLUDES " +- "(%s) resolves to the topsrcdir or topobjdir (%s), which is " +- "not allowed" % (local_include, full_path), +- context, +- ) + include_obj = LocalInclude(context, local_include) + local_includes.append(include_obj.path.full_path) + yield include_obj +diff --git a/python/mozbuild/mozbuild/test/frontend/test_emitter.py b/python/mozbuild/mozbuild/test/frontend/test_emitter.py +index 99507fc..821de22 100644 +--- a/python/mozbuild/mozbuild/test/frontend/test_emitter.py ++++ b/python/mozbuild/mozbuild/test/frontend/test_emitter.py +@@ -1076,28 +1076,6 @@ class TestEmitterBasic(unittest.TestCase): + + self.assertEqual(local_includes, expected) + +- def test_local_includes_invalid(self): +- """Test that invalid LOCAL_INCLUDES are properly detected.""" +- reader = self.reader("local_includes-invalid/srcdir") +- +- with six.assertRaisesRegex( +- self, +- SandboxValidationError, +- "Path specified in LOCAL_INCLUDES.*resolves to the " +- "topsrcdir or topobjdir", +- ): +- self.read_topsrcdir(reader) +- +- reader = self.reader("local_includes-invalid/objdir") +- +- with six.assertRaisesRegex( +- self, +- SandboxValidationError, +- "Path specified in LOCAL_INCLUDES.*resolves to the " +- "topsrcdir or topobjdir", +- ): +- self.read_topsrcdir(reader) +- + def test_local_includes_file(self): + """Test that a filename can't be used in LOCAL_INCLUDES.""" + reader = self.reader("local_includes-filename") +-- +2.37.1 + diff --git a/firefox-112.0-commasplit.patch b/firefox-112.0-commasplit.patch new file mode 100644 index 0000000..a56aec4 --- /dev/null +++ b/firefox-112.0-commasplit.patch @@ -0,0 +1,76 @@ +--- firefox-111.0.1/build/moz.configure/rust.configure 2023-03-21 06:16:03.000000000 -0700 ++++ firefox-111.0.1/build/moz.configure/rust.configure.new 2023-04-05 08:57:29.403219120 -0700 +@@ -593,7 +593,7 @@ + + # ============================================================== + +-option(env="RUSTFLAGS", nargs=1, help="Rust compiler flags") ++option(env="RUSTFLAGS", nargs=1, help="Rust compiler flags", comma_split=False) + set_config("RUSTFLAGS", depends("RUSTFLAGS")(lambda flags: flags)) + + +--- firefox-111.0.1/python/mozbuild/mozbuild/configure/options.py 2023-03-21 06:16:09.000000000 -0700 ++++ firefox-111.0.1/python/mozbuild/mozbuild/configure/options.py.new 2023-04-05 08:57:31.270193468 -0700 +@@ -191,6 +191,10 @@ + to instantiate an option indirectly. Set this to a positive integer to + force the script to look into a deeper stack frame when inferring the + `category`. ++ - `comma_split` specifies whether the value string should be split on ++ commas. The default is True. Setting it False is necessary for things ++ like compiler flags which should be a single string that may contain ++ commas. + """ + + __slots__ = ( +@@ -205,6 +209,7 @@ + "possible_origins", + "category", + "define_depth", ++ "comma_split", + ) + + def __init__( +@@ -218,6 +223,7 @@ + category=None, + help=None, + define_depth=0, ++ comma_split=True, + ): + if not name and not env: + raise InvalidOptionError( +@@ -335,9 +341,10 @@ + self.choices = choices + self.help = help + self.category = category or _infer_option_category(define_depth) ++ self.comma_split = comma_split + + @staticmethod +- def split_option(option): ++ def split_option(option, comma_split=True): + """Split a flag or variable into a prefix, a name and values + + Variables come in the form NAME=values (no prefix). +@@ -350,7 +357,13 @@ + + elements = option.split("=", 1) + name = elements[0] +- values = tuple(elements[1].split(",")) if len(elements) == 2 else () ++ if len(elements) == 2: ++ if comma_split: ++ values = tuple(elements[1].split(",")) ++ else: ++ values = (elements[1],) ++ else: ++ values = () + if name.startswith("--"): + name = name[2:] + if not name.islower(): +@@ -426,7 +439,7 @@ + % (option, origin, ", ".join(self.possible_origins)) + ) + +- prefix, name, values = self.split_option(option) ++ prefix, name, values = self.split_option(option, self.comma_split) + option = self._join_option(prefix, name) + + assert name in (self.name, self.env) diff --git a/gjs.spec b/gjs.spec index 7544413..eb0df28 100644 --- a/gjs.spec +++ b/gjs.spec @@ -2,6 +2,22 @@ %global gobject_introspection_version 1.66.0 %global mozjs115_version 115.7.0 +%global bundled_mozjs 1 + +%if 0%{?bundled_mozjs} +%global mozjs_major 115 +%global mozjs_version 115.7.0 + +# Big endian platforms +%ifarch ppc ppc64 s390 s390x +%global big_endian 1 +%endif + +# Make sure we don't add requires/provides for private libraries +%global __provides_exclude_from ^%{_libdir}/gjs/ +%global __requires_exclude ^libmozjs-%{mozjs_major}\\.so.* +%endif + Name: gjs Version: 1.80.2 Release: 1%{?dist} @@ -13,19 +29,85 @@ Summary: Javascript Bindings for GNOME # Stack printer (gjs/stack.c) # modules/esm/_encoding/util.js and few other things are MIT # modules/script/tweener/equations.js is BSD-3-Clause +%if 0%{?bundled_mozjs} +License: MIT AND BSD-3-Clause AND (MIT OR LGPL-2.0-or-later) AND (MPL-1.1 OR GPL-2.0-or-later OR LGPL-2.1-or-later) AND MPL-2.0 AND GPL-3.0-or-later AND AFL AND ASL-2.0 +%else License: MIT AND BSD-3-Clause AND (MIT OR LGPL-2.0-or-later) AND (MPL-1.1 OR GPL-2.0-or-later OR LGPL-2.1-or-later) +%endif URL: https://wiki.gnome.org/Projects/Gjs Source0: https://download.gnome.org/sources/%{name}/1.80/%{name}-%{version}.tar.xz +%if 0%{?bundled_mozjs} +Source1: https://ftp.mozilla.org/pub/firefox/releases/%{mozjs_version}esr/source/firefox-%{mozjs_version}esr.source.tar.xz +Provides: bundled(mozjs) = %{mozjs_version} + +# Known failures with system libicu +Source2: known_failures.txt + +# Patches from mozjs68, rebased for mozjs78: +Patch02: copy-headers.patch +Patch03: tests-increase-timeout.patch +Patch09: icu_sources_data.py-Decouple-from-Mozilla-build-system.patch +Patch10: icu_sources_data-Write-command-output-to-our-stderr.patch + +# Build fixes - https://hg.mozilla.org/mozilla-central/rev/ca36a6c4f8a4a0ddaa033fdbe20836d87bbfb873 +Patch12: emitter.patch +Patch13: tests-Use-native-TemporaryDirectory.patch + +# Build fixes +Patch14: init_patch.patch +Patch15: remove-sloppy-m4-detection-from-bundled-autoconf.patch + +# tentative patch for RUSTFLAGS parsing issue, taken from firefox package: +# https://bugzilla.redhat.com/show_bug.cgi?id=2184743 +# https://bugzilla.mozilla.org/show_bug.cgi?id=1474486 +Patch16: firefox-112.0-commasplit.patch + +# TODO: Check with mozilla for cause of these fails and re-enable spidermonkey compile time checks if needed +Patch20: spidermonkey_checks_disable.patch + +# s390x/ppc64 fixes +Patch21: 0001-Skip-failing-tests-on-ppc64-and-s390x.patch +%endif + BuildRequires: gcc-c++ BuildRequires: meson BuildRequires: gettext + +%if 0%{?bundled_mozjs} +BuildRequires: cargo +%if !0%{?rhel} +BuildRequires: ccache +%endif +BuildRequires: clang-devel +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: m4 +BuildRequires: make +%if !0%{?rhel} +BuildRequires: nasm +%endif +BuildRequires: libicu-devel +BuildRequires: llvm +BuildRequires: rust +BuildRequires: rustfmt +BuildRequires: perl-devel +BuildRequires: pkgconfig(libffi) +BuildRequires: pkgconfig(zlib) +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-six +BuildRequires: readline-devel +BuildRequires: wget +BuildRequires: zip +%else +BuildRequires: pkgconfig(mozjs-115) >= %{mozjs115_version} +%endif BuildRequires: readline-devel BuildRequires: pkgconfig(cairo-gobject) BuildRequires: pkgconfig(gio-2.0) >= %{glib2_version} BuildRequires: pkgconfig(gobject-introspection-1.0) >= %{gobject_introspection_version} BuildRequires: pkgconfig(gtk4) -BuildRequires: pkgconfig(mozjs-115) >= %{mozjs115_version} BuildRequires: pkgconfig(sysprof-capture-4) # For GTK+ 3 tests BuildRequires: gtk3 @@ -38,7 +120,9 @@ BuildRequires: xorg-x11-server-Xvfb Requires: glib2%{?_isa} >= %{glib2_version} Requires: gobject-introspection%{?_isa} >= %{gobject_introspection_version} +%if !0%{?bundled_mozjs} Requires: mozjs115%{?_isa} >= %{mozjs115_version} +%endif %description Gjs allows using GNOME libraries from Javascript. It's based on the @@ -63,16 +147,129 @@ The gjs-tests package contains tests that can be used to verify the functionality of the installed gjs package. %prep -%autosetup -p1 +%setup -q + +%if 0%{?bundled_mozjs} +# Extract mozjs archive +tar -xf %{S:1} + +# Apply mozjs patches +pushd firefox-%{mozjs_version} +%patch 2 -p1 +%patch 3 -p1 +%patch 9 -p1 +%patch 10 -p1 + +%patch 12 -p1 +%patch 13 -p1 + +%patch 14 -p1 +%patch 15 -p1 + +%patch 16 -p1 + +%patch 20 -p1 +%patch 21 -p1 + +# Purge the bundled six library incompatible with Python 3.12 +rm third_party/python/six/six.py + +# Link the system six library (build tooling expects that) +ln -s /usr/lib/python%{python3_version}/site-packages/six.py third_party/python/six/six.py + +# Copy out file containing known test failures with system libicu +cp %{SOURCE2} js/src/ + +# Remove zlib directory (to be sure using system version) +rm -rf modules/zlib +popd +%endif %build +%if 0%{?bundled_mozjs} +pushd firefox-%{mozjs_version}/js/src +# Prefer GCC for now +export CC=gcc +export CXX=g++ + +# Workaround +# error: options `-C embed-bitcode=no` and `-C lto` are incompatible +# error: could not compile `jsrust`. +# https://github.com/japaric/cargo-call-stack/issues/25 +export RUSTFLAGS="-C embed-bitcode" + +# https://github.com/ptomato/mozjs/commit/36bb7982b41e0ef9a65f7174252ab996cd6777bd +export CARGO_PROFILE_RELEASE_LTO=true + +export LINKFLAGS="%{?__global_ldflags}" +export PYTHON="%{__python3}" + +%configure \ + --with-system-icu \ + --with-system-zlib \ + --disable-tests \ + --disable-strip \ + --with-intl-api \ + --enable-readline \ + --enable-shared-js \ + --enable-optimize \ + --disable-debug \ + --enable-pie \ + --disable-jemalloc + +%make_build +popd + +cat > mozjs-%{mozjs_major}.pc << EOF +Name: SpiderMonkey %{mozjs_version} +Description: The Mozilla library for JavaScript +Version: %{mozjs_version} + +prefix=%{_libdir}/gjs + +Libs: -L`pwd`/firefox-%{mozjs_version}/js/src/dist/bin -Wl,-rpath=%{_libdir}/gjs -lmozjs-%{mozjs_major} +Cflags: -I`pwd`/firefox-%{mozjs_version}/js/src/dist/include +EOF +%endif + +%if 0%{?bundled_mozjs} +export PKG_CONFIG_PATH=`pwd` +export LD_LIBRARY_PATH=`pwd`/firefox-%{mozjs_version}/js/src/dist/bin +%endif + %meson %meson_build %install +%if 0%{?bundled_mozjs} +mkdir -p %{buildroot}%{_libdir}/gjs +cp -p firefox-%{mozjs_version}/js/src/dist/bin/libmozjs-%{mozjs_major}.so %{buildroot}%{_libdir}/gjs/ +%endif + %meson_install +%if 0%{?bundled_mozjs} +sed -i -e 's/, mozjs-%{mozjs_major}//g' %{buildroot}%{_libdir}/pkgconfig/gjs-1.0.pc +%endif + %check +%if 0%{?bundled_mozjs} +export LD_LIBRARY_PATH=`pwd`/firefox-%{mozjs_version}/js/src/dist/bin + +pushd firefox-%{mozjs_version}/js/src +# Run SpiderMonkey tests +%{python3} tests/jstests.py -d -s -t 2400 --exclude-file=known_failures.txt --no-progress --wpt=disabled ../../js/src/dist/bin/js + +# Run basic JIT tests +# large-arraybuffers/basic.js fails on s390x +%ifarch s390 s390x +%{python3} jit-test/jit_test.py -s -t 2400 --no-progress -x large-arraybuffers/basic.js ../../js/src/dist/bin/js basic +%else +%{python3} jit-test/jit_test.py -s -t 2400 --no-progress ../../js/src/dist/bin/js basic +%endif +popd +%endif + %{shrink:xvfb-run -s "-screen 0 1600x1200x24" %meson_test --timeout-multiplier=5} %files diff --git a/icu_sources_data-Write-command-output-to-our-stderr.patch b/icu_sources_data-Write-command-output-to-our-stderr.patch new file mode 100644 index 0000000..8468425 --- /dev/null +++ b/icu_sources_data-Write-command-output-to-our-stderr.patch @@ -0,0 +1,44 @@ +From: Simon McVittie +Date: Mon, 9 Oct 2017 09:23:14 +0100 +Subject: icu_sources_data: Write command output to our stderr + +Saying "See output in /tmp/foobar" is all very well for a developer +build, but on a buildd our /tmp is going to get thrown away after +the build. Just log the usual way instead. +--- + intl/icu_sources_data.py | 16 ++++------------ + 1 file changed, 4 insertions(+), 12 deletions(-) + +diff --git a/intl/icu_sources_data.py b/intl/icu_sources_data.py +index 4db52af..d62960d 100644 +--- a/intl/icu_sources_data.py ++++ b/intl/icu_sources_data.py +@@ -188,21 +188,13 @@ def update_sources(topsrcdir): + + def try_run(name, command, cwd=None, **kwargs): + try: +- with tempfile.NamedTemporaryFile(prefix=name, delete=False) as f: +- subprocess.check_call( +- command, cwd=cwd, stdout=f, stderr=subprocess.STDOUT, **kwargs +- ) +- except subprocess.CalledProcessError: +- print( +- """Error running "{}" in directory {} +- See output in {}""".format( +- " ".join(command), cwd, f.name +- ), +- file=sys.stderr, ++ subprocess.check_call( ++ command, cwd=cwd, stdout=sys.stderr, stderr=subprocess.STDOUT, **kwargs + ) ++ except subprocess.CalledProcessError: ++ print('''Error running "{}" in directory {}'''.format(' '.join(command), cwd), file=sys.stderr) + return False + else: +- os.unlink(f.name) + return True + + +-- +2.31.1 + diff --git a/icu_sources_data.py-Decouple-from-Mozilla-build-system.patch b/icu_sources_data.py-Decouple-from-Mozilla-build-system.patch new file mode 100644 index 0000000..8572c21 --- /dev/null +++ b/icu_sources_data.py-Decouple-from-Mozilla-build-system.patch @@ -0,0 +1,29 @@ +From: Simon McVittie +Date: Mon, 9 Oct 2017 09:22:12 +0100 +Subject: icu_sources_data.py: Decouple from Mozilla build system + +mozpack.path is a wrapper around os.path that normalizes path +separators on Windows, but on Unix we only have one path separator +so there's nothing to normalize. Avoid needing to import all of it. +--- + intl/icu_sources_data.py | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/intl/icu_sources_data.py b/intl/icu_sources_data.py +index 2936df9..4db52af 100644 +--- a/intl/icu_sources_data.py ++++ b/intl/icu_sources_data.py +@@ -21,7 +21,9 @@ import subprocess + import sys + import tempfile + +-from mozpack import path as mozpath ++# Close enough ++import os.path as mozpath ++mozpath.normsep = lambda p: p + + # The following files have been determined to be dead/unused by a + # semi-automated analysis. You can just remove any of the files below +-- +2.31.1 + diff --git a/init_patch.patch b/init_patch.patch new file mode 100644 index 0000000..28ed1d3 --- /dev/null +++ b/init_patch.patch @@ -0,0 +1,28 @@ +From 00414eb67ab0591911167155963b5524fbf2b0c0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Franti=C5=A1ek=20Zatloukal?= +Date: Mon, 9 Aug 2021 14:38:58 +0200 +Subject: [PATCH] Don't throw InvalidOptionError on invalid options + +--- + python/mozbuild/mozbuild/configure/__init__.py | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +diff --git a/python/mozbuild/mozbuild/configure/__init__.py b/python/mozbuild/mozbuild/configure/__init__.py +index f3167f6..c9e1132 100644 +--- a/python/mozbuild/mozbuild/configure/__init__.py ++++ b/python/mozbuild/mozbuild/configure/__init__.py +@@ -557,10 +557,7 @@ class ConfigureSandbox(dict): + for arg in self._helper: + without_value = arg.split("=", 1)[0] + msg = "Unknown option: %s" % without_value +- if self._help: +- self._logger.warning(msg) +- else: +- raise InvalidOptionError(msg) ++ self._logger.warning(msg) + + # Run the execution queue + for func, args in self._execution_queue: +-- +2.31.1 + diff --git a/known_failures.txt b/known_failures.txt new file mode 100644 index 0000000..c586972 --- /dev/null +++ b/known_failures.txt @@ -0,0 +1,42 @@ +non262/Intl/available-locales-resolved.js +non262/Intl/available-locales-supported.js +non262/Intl/Collator/big5han-gb2312han.js +non262/Intl/Collator/implicithan.js +non262/Intl/DateTimeFormat/day-period-hour-cycle.js +non262/Intl/DateTimeFormat/fractional-second-digits-append-item.js +non262/Intl/DateTimeFormat/related-year.js +non262/Intl/DateTimeFormat/timeZone_backzone.js +non262/Intl/DisplayNames/calendar.js +non262/Intl/DisplayNames/currency.js +non262/Intl/DisplayNames/language-dialect.js +non262/Intl/ListFormat/conjunction-type.js +non262/Intl/Locale/likely-subtags-generated.js +non262/Intl/Locale/likely-subtags.js +non262/Intl/supportedValuesOf-timeZones-canonical.js +non262/Intl/supportedValuesOf-timeZones.js +test262/built-ins/RegExp/property-escapes/generated/Alphabetic.js +test262/built-ins/RegExp/property-escapes/generated/Assigned.js +test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter.js +test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Letter.js +test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Symbol.js +test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Other.js +test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Symbol.js +test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Unassigned.js +test262/built-ins/RegExp/property-escapes/generated/Grapheme_Base.js +test262/built-ins/RegExp/property-escapes/generated/ID_Continue.js +test262/built-ins/RegExp/property-escapes/generated/ID_Start.js +test262/built-ins/RegExp/property-escapes/generated/Ideographic.js +test262/built-ins/RegExp/property-escapes/generated/IDS_Binary_Operator.js +test262/built-ins/RegExp/property-escapes/generated/Script_-_Common.js +test262/built-ins/RegExp/property-escapes/generated/Script_-_Han.js +test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Common.js +test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Han.js +test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Malayalam.js +test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sharada.js +test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sinhala.js +test262/built-ins/RegExp/property-escapes/generated/Sentence_Terminal.js +test262/built-ins/RegExp/property-escapes/generated/Unified_Ideograph.js +test262/built-ins/RegExp/property-escapes/generated/XID_Continue.js +test262/built-ins/RegExp/property-escapes/generated/XID_Start.js +test262/intl402/Intl/supportedValuesOf/timeZones-accepted-by-DateTimeFormat.js +test262/intl402/Locale/likely-subtags.js \ No newline at end of file diff --git a/remove-sloppy-m4-detection-from-bundled-autoconf.patch b/remove-sloppy-m4-detection-from-bundled-autoconf.patch new file mode 100644 index 0000000..10b8b16 --- /dev/null +++ b/remove-sloppy-m4-detection-from-bundled-autoconf.patch @@ -0,0 +1,29 @@ +From 2d99a7b076578a3394fb9d5be6eb44f9cfebc681 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Franti=C5=A1ek=20Zatloukal?= +Date: Mon, 9 Aug 2021 16:15:37 +0200 +Subject: [PATCH] Remove sloppy m4 detection from bundled autoconf + +--- + build/autoconf/autoconf.sh | 6 ------ + 1 file changed, 6 deletions(-) + +diff --git a/build/autoconf/autoconf.sh b/build/autoconf/autoconf.sh +index ceb8a25..606c74e 100644 +--- a/build/autoconf/autoconf.sh ++++ b/build/autoconf/autoconf.sh +@@ -114,12 +114,6 @@ fi + + # Use the frozen version of Autoconf if available. + r= f= +-# Some non-GNU m4's don't reject the --help option, so give them /dev/null. +-case `$M4 --help < /dev/null 2>&1` in +-*reload-state*) test -r $AC_MACRODIR/autoconf.m4f && { r=--reload f=f; } ;; +-*traditional*) ;; +-*) echo Autoconf requires GNU m4 1.1 or later >&2; rm -f $tmpin; exit 1 ;; +-esac + + $M4 -I$AC_MACRODIR $use_localdir $r autoconf.m4$f $infile > $tmpout || + { rm -f $tmpin $tmpout; exit 2; } +-- +2.31.1 + diff --git a/sources b/sources index 11956d4..1446038 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ SHA512 (gjs-1.80.2.tar.xz) = cc9a9073f741ee60eff2d2ce808cca7f40e97798f9ffa9197ebc3780a8a5df6e174ba76293bf7547fc8fa7e82be6a828a633a5aa8ba27d551dec72d635b6c5bd +SHA512 (firefox-115.7.0esr.source.tar.xz) = d468d8ef117d76e0660c5359c3becf0502354c61bdaaeb4137d86f52b50143abec2ac4578af69afa5670700b57efff1c7323ca23e3339a9eaaa888dee7e8e922 diff --git a/spidermonkey_checks_disable.patch b/spidermonkey_checks_disable.patch new file mode 100644 index 0000000..451d3ee --- /dev/null +++ b/spidermonkey_checks_disable.patch @@ -0,0 +1,22 @@ +From 6ebe8ce6a3267c96454de3cd453269b4c4053a3e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Franti=C5=A1ek=20Zatloukal?= +Date: Mon, 9 Aug 2021 14:41:14 +0200 +Subject: [PATCH] Don't die on SpiderMonkey checks + +--- + config/run_spidermonkey_checks.py | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/config/run_spidermonkey_checks.py b/config/run_spidermonkey_checks.py +index 0f842d9..b49db52 100644 +--- a/config/run_spidermonkey_checks.py ++++ b/config/run_spidermonkey_checks.py +@@ -11,5 +11,3 @@ import sys + def main(output, lib_file, *scripts): + for script in scripts: + retcode = subprocess.call([sys.executable, script], cwd=buildconfig.topsrcdir) +- if retcode != 0: +- raise Exception(script + " failed") +-- +2.31.1 + diff --git a/tests-Use-native-TemporaryDirectory.patch b/tests-Use-native-TemporaryDirectory.patch new file mode 100644 index 0000000..5102312 --- /dev/null +++ b/tests-Use-native-TemporaryDirectory.patch @@ -0,0 +1,65 @@ +From 1af9fdd2124547099eb0cf5a71b513ef5592dbf9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Franti=C5=A1ek=20Zatloukal?= +Date: Tue, 10 Aug 2021 00:00:50 +0200 +Subject: [PATCH] Tests: Use native TemporaryDirectory + +Without ugly wrapper for Py < 3.2 that doesn't work half of the times... +--- + js/src/jit-test/jit_test.py | 2 +- + js/src/tests/jstests.py | 2 +- + js/src/tests/lib/tempfile.py | 16 +--------------- + 3 files changed, 3 insertions(+), 17 deletions(-) + +diff --git a/js/src/jit-test/jit_test.py b/js/src/jit-test/jit_test.py +index d9f08a7..1824dee 100755 +--- a/js/src/jit-test/jit_test.py ++++ b/js/src/jit-test/jit_test.py +@@ -28,7 +28,7 @@ def add_tests_dir_to_path(): + add_tests_dir_to_path() + + from lib import jittests +-from lib.tempfile import TemporaryDirectory ++from tempfile import TemporaryDirectory + from lib.tests import ( + change_env, + get_cpu_count, +diff --git a/js/src/tests/jstests.py b/js/src/tests/jstests.py +index cc11c3d..fff7857 100755 +--- a/js/src/tests/jstests.py ++++ b/js/src/tests/jstests.py +@@ -27,7 +27,7 @@ from subprocess import call, list2cmdline + from lib.adaptor import xdr_annotate + from lib.progressbar import ProgressBar + from lib.results import ResultsSink, TestOutput +-from lib.tempfile import TemporaryDirectory ++from tempfile import TemporaryDirectory + from lib.tests import ( + RefTestCase, + change_env, +diff --git a/js/src/tests/lib/tempfile.py b/js/src/tests/lib/tempfile.py +index 604864d..b791387 100644 +--- a/js/src/tests/lib/tempfile.py ++++ b/js/src/tests/lib/tempfile.py +@@ -1,18 +1,4 @@ + # This Source Code Form is subject to the terms of the Mozilla Public + # 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/. +-try: +- # Python 3.2 +- from tempfile import TemporaryDirectory +-except ImportError: +- import shutil +- import tempfile +- from contextlib import contextmanager +- +- @contextmanager +- def TemporaryDirectory(*args, **kwds): +- d = tempfile.mkdtemp(*args, **kwds) +- try: +- yield d +- finally: +- shutil.rmtree(d) ++from tempfile import TemporaryDirectory +-- +2.41.0 + diff --git a/tests-increase-timeout.patch b/tests-increase-timeout.patch new file mode 100644 index 0000000..2ba725c --- /dev/null +++ b/tests-increase-timeout.patch @@ -0,0 +1,26 @@ +From 9be85b155c6df0454c5faef9e850f572c99e3615 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Franti=C5=A1ek=20Zatloukal?= +Date: Wed, 15 Jul 2020 08:32:44 +0200 +Subject: [PATCH] Increase the test timeout for slower buildds + +Ported forward from Debian: https://bugs.debian.org/878284 +--- + js/src/Makefile.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/js/src/Makefile.in b/js/src/Makefile.in +index 6daed72..16db2de 100644 +--- a/js/src/Makefile.in ++++ b/js/src/Makefile.in +@@ -53,7 +53,7 @@ check:: check-js-msg + + check-jstests: + $(wildcard $(RUN_TEST_PROGRAM)) $(PYTHON3) -u $(srcdir)/tests/jstests.py \ +- --no-progress --format=automation --timeout 300 \ ++ --no-progress --format=automation --timeout 600 \ + $(JSTESTS_EXTRA_ARGS) \ + $(DIST)/bin/js$(BIN_SUFFIX) + +-- +2.37.1 +