The package rpms/mozjs91.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/mozjs91.git/commit/?id=95774b82b8....
Change:
+%ifarch s390 s390x
Thanks.
Full change:
============
commit 95774b82b84ae801a3132ecb21c1bae73c6bd2ab
Author: František Zatloukal <fzatlouk(a)redhat.com>
Date: Tue Aug 24 16:00:21 2021 +0200
Package Init
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8fe14d6
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/firefox-91.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?= <fzatlouk(a)redhat.com>
+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..aafe1aa
--- /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?= <fzatlouk(a)redhat.com>
+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 d964466..0285ad9 100644
+--- a/python/mozbuild/mozbuild/backend/recursivemake.py
++++ b/python/mozbuild/mozbuild/backend/recursivemake.py
+@@ -1568,9 +1568,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(
+@@ -1581,7 +1581,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.31.1
+
diff --git a/definitions_for_user_vfp.patch b/definitions_for_user_vfp.patch
new file mode 100644
index 0000000..066ed57
--- /dev/null
+++ b/definitions_for_user_vfp.patch
@@ -0,0 +1,35 @@
+From fd6847c9416f9eebde636e21d794d25d1be8791d Mon Sep 17 00:00:00 2001
+From: Mike Hommey <mh(a)glandium.org>
+Date: Sat, 1 Jun 2019 09:06:01 +0900
+Subject: [PATCH] Bug 1526653 - Include struct definitions for user_vfp and
+ user_vfp_exc.
+
+---
+ js/src/wasm/WasmSignalHandlers.cpp | 11 ++++++++++-
+ 1 file changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/js/src/wasm/WasmSignalHandlers.cpp b/js/src/wasm/WasmSignalHandlers.cpp
+index 37bc5a9..67b43ad 100644
+--- a/js/src/wasm/WasmSignalHandlers.cpp
++++ b/js/src/wasm/WasmSignalHandlers.cpp
+@@ -252,7 +252,16 @@ using mozilla::DebugOnly;
+ #endif
+
+ #ifdef WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS
+-# include <sys/user.h>
++struct user_vfp {
++ unsigned long long fpregs[32];
++ unsigned long fpscr;
++};
++
++struct user_vfp_exc {
++ unsigned long fpexc;
++ unsigned long fpinst;
++ unsigned long fpinst2;
++};
+ #endif
+
+ #if defined(ANDROID)
+--
+2.31.1
+
diff --git a/emitter.patch b/emitter.patch
new file mode 100644
index 0000000..556bebd
--- /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?= <fzatlouk(a)redhat.com>
+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 44b916e..f2e821d 100644
+--- a/python/mozbuild/mozbuild/frontend/emitter.py
++++ b/python/mozbuild/mozbuild/frontend/emitter.py
+@@ -1367,16 +1367,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 e53bc5e..c1b9d32 100644
+--- a/python/mozbuild/mozbuild/test/frontend/test_emitter.py
++++ b/python/mozbuild/mozbuild/test/frontend/test_emitter.py
+@@ -1098,28 +1098,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.31.1
+
diff --git a/fix-soname.patch b/fix-soname.patch
new file mode 100644
index 0000000..a319d9e
--- /dev/null
+++ b/fix-soname.patch
@@ -0,0 +1,26 @@
+From d21c7cb9343d8c495d987e71be0f35887574c820 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Franti=C5=A1ek=20Zatloukal?= <fzatlouk(a)redhat.com>
+Date: Wed, 15 Jul 2020 08:21:47 +0200
+Subject: [PATCH] Add soname switch to linker, regardless of Operating System
+
+Fix backported from Debian:
http://bugs.debian.org/746705
+---
+ config/rules.mk | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/config/rules.mk b/config/rules.mk
+index 0f9b2ac..f6b4efe 100644
+--- a/config/rules.mk
++++ b/config/rules.mk
+@@ -285,6 +285,8 @@ ifeq ($(OS_ARCH),GNU)
+ OS_CPPFLAGS += -DPATH_MAX=1024 -DMAXPATHLEN=1024
+ endif
+
++EXTRA_DSO_LDOPTS += -Wl,-soname,lib$(JS_LIBRARY_NAME).so.0
++
+ #
+ # MINGW32
+ #
+--
+2.31.1
+
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 <smcv(a)debian.org>
+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 <smcv(a)debian.org>
+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..1954a55
--- /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?= <fzatlouk(a)redhat.com>
+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
+@@ -553,10 +553,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/mozjs91.spec b/mozjs91.spec
new file mode 100644
index 0000000..140dd6f
--- /dev/null
+++ b/mozjs91.spec
@@ -0,0 +1,250 @@
+%global major 91
+
+# LTO - Enable in Release builds, but consider disabling for development as it increases
compile time
+%global build_with_lto 1
+
+# Require tests to pass?
+%global require_tests 1
+
+%if 0%{?build_with_lto}
+# LTO is default since F33 and F32 package is backported as is, so no LTO there
+%else
+%define _lto_cflags %{nil}
+%endif
+
+# Big endian platforms
+%ifarch ppc ppc64 s390 s390x
+%global big_endian 1
+%endif
+
+Name: mozjs%{major}
+Version: 91.0
+Release: 1%{?dist}
+Summary: SpiderMonkey JavaScript library
+
+License: MPLv2.0 and MPLv1.1 and BSD and GPLv2+ and GPLv3+ and LGPLv2+ and AFL and
ASL 2.0
+URL:
https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey
+Source0:
https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/source/firefox...
+
+# Patches from mozjs68, rebased for mozjs78:
+Patch01: fix-soname.patch
+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/ca36a6c4f8a4a0ddaa033fdbe20836...
+Patch12: emitter.patch
+Patch13: tests-Use-native-TemporaryDirectory.patch
+
+# Build fixes
+Patch14: init_patch.patch
+Patch15: remove-sloppy-m4-detection-from-bundled-autoconf.patch
+
+# TODO: Check with mozilla for cause of these fails and re-enable spidermonkey compile
time checks if needed
+Patch16: spidermonkey_checks_disable.patch
+
+# armv7 fixes
+Patch17: definitions_for_user_vfp.patch
+
+# s390x/ppc64 fixes
+Patch19: 0001-Skip-failing-tests-on-ppc64-and-s390x.patch
+
+BuildRequires: cargo
+BuildRequires: clang-devel
+BuildRequires: gcc
+BuildRequires: gcc-c++
+BuildRequires: m4
+BuildRequires: make
+%if !0%{?rhel}
+BuildRequires: nasm
+%endif
+BuildRequires: llvm
+BuildRequires: rust
+BuildRequires: perl-devel
+BuildRequires: pkgconfig(libffi)
+BuildRequires: pkgconfig(zlib)
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-six
+BuildRequires: readline-devel
+BuildRequires: zip
+
+%description
+SpiderMonkey is the code-name for Mozilla Firefox's C++ implementation of
+JavaScript. It is intended to be embedded in other applications
+that provide host environments for JavaScript.
+
+%package devel
+Summary: Development files for %{name}
+Requires: %{name}%{?_isa} = %{version}-%{release}
+
+%description devel
+The %{name}-devel package contains libraries and header files for
+developing applications that use %{name}.
+
+%prep
+%setup -q -n firefox-%{version}/js/src
+
+pushd ../..
+%patch01 -p1
+%patch02 -p1
+%patch03 -p1
+%patch09 -p1
+%patch10 -p1
+
+%patch12 -p1
+%patch13 -p1
+%patch14 -p1
+%patch15 -p1
+%patch16 -p1
+
+%ifarch armv7hl
+# Include definitions for user vfp on armv7 as it causes the compilation to fail without
them
+#
https://bugzilla.mozilla.org/show_bug.cgi?id=1526653
+%patch17 -p1
+%endif
+
+# Fixes for ppc64 and s390x, there is no need to keep it in ifarch here since mozilla
tests support ifarch conditions
+%patch19 -p1
+
+# Copy out the LICENSE file
+cp LICENSE js/src/
+popd
+
+# Remove zlib directory (to be sure using system version)
+rm -rf ../../modules/zlib
+
+%build
+# 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"
+
+%if 0%{?build_with_lto}
+#
https://github.com/ptomato/mozjs/commit/36bb7982b41e0ef9a65f7174252ab996c...
+export CARGO_PROFILE_RELEASE_LTO=true
+%endif
+
+export CFLAGS="%{optflags}"
+export CXXFLAGS="$CFLAGS"
+export LINKFLAGS="%{?build_ldflags}"
+export PYTHON="%{python3}"
+
+# Use bundled autoconf
+export M4=m4
+export AWK=awk
+export AC_MACRODIR=/builddir/build/BUILD/firefox-%{version}/build/autoconf/
+
+sh ../../build/autoconf/autoconf.sh
--localdir=/builddir/build/BUILD/firefox-%{version}/js/src configure.in > configure
+chmod +x configure
+
+%configure \
+ --without-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
+
+%install
+%make_install
+
+# Fix permissions
+chmod -x %{buildroot}%{_libdir}/pkgconfig/*.pc
+
+# Avoid multilib conflicts
+case `uname -i` in
+ i386 | ppc | s390 | sparc )
+ wordsize="32"
+ ;;
+ x86_64 | ppc64 | s390x | sparc64 )
+ wordsize="64"
+ ;;
+ *)
+ wordsize=""
+ ;;
+esac
+
+if test -n "$wordsize"
+then
+ mv %{buildroot}%{_includedir}/mozjs-%{major}/js-config.h \
+ %{buildroot}%{_includedir}/mozjs-%{major}/js-config-$wordsize.h
+
+ cat >%{buildroot}%{_includedir}/mozjs-%{major}/js-config.h <<EOF
+#ifndef JS_CONFIG_H_MULTILIB
+#define JS_CONFIG_H_MULTILIB
+
+#include <bits/wordsize.h>
+
+#if __WORDSIZE == 32
+# include "js-config-32.h"
+#elif __WORDSIZE == 64
+# include "js-config-64.h"
+#else
+# error "unexpected value for __WORDSIZE macro"
+#endif
+
+#endif
+EOF
+
+fi
+
+# Remove unneeded files
+rm %{buildroot}%{_bindir}/js%{major}-config
+rm %{buildroot}%{_libdir}/libjs_static.ajs
+
+# Rename library and create symlinks, following fix-soname.patch
+mv %{buildroot}%{_libdir}/libmozjs-%{major}.so \
+ %{buildroot}%{_libdir}/libmozjs-%{major}.so.0.0.0
+ln -s libmozjs-%{major}.so.0.0.0 %{buildroot}%{_libdir}/libmozjs-%{major}.so.0
+ln -s libmozjs-%{major}.so.0 %{buildroot}%{_libdir}/libmozjs-%{major}.so
+
+%check
+# Run SpiderMonkey tests
+%if 0%{?require_tests}
+%{python3} tests/jstests.py -d -s -t 2400 --no-progress --wpt=disabled
../../js/src/dist/bin/js%{major}
+%else
+%{python3} tests/jstests.py -d -s -t 2400 --no-progress --wpt=disabled
../../js/src/dist/bin/js%{major} || :
+%endif
+
+# Run basic JIT tests
+%if 0%{?require_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%{major} basic
+%else
+%{python3} jit-test/jit_test.py -s -t 2400 --no-progress ../../js/src/dist/bin/js%{major}
basic
+%endif
+
+%else
+%{python3} jit-test/jit_test.py -s -t 2400 --no-progress ../../js/src/dist/bin/js%{major}
basic || :
+%endif
+
+%files
+%doc README.html
+%license LICENSE
+%{_libdir}/libmozjs-%{major}.so.0*
+
+%files devel
+%{_bindir}/js%{major}
+%{_libdir}/libmozjs-%{major}.so
+%{_libdir}/pkgconfig/*.pc
+%{_includedir}/mozjs-%{major}/
+
+%changelog
+* Mon Aug 09 2021 Frantisek Zatloukal <fzatlouk(a)redhat.com> - 91.0-1
+- Initial mozjs91 package based on mozjs78
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?= <fzatlouk(a)redhat.com>
+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
new file mode 100644
index 0000000..ccbc731
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (firefox-91.0esr.source.tar.xz) =
e518e1536094a1da44eb45b3b0f3adc1b5532f17da2dbcc994715419ec4fcec40574fdf633349a8e5de6382942f5706757a35f1b96b11de4754855b9cf7946ae
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?= <fzatlouk(a)redhat.com>
+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..054685c
--- /dev/null
+++ b/tests-Use-native-TemporaryDirectory.patch
@@ -0,0 +1,66 @@
+From 1af9fdd2124547099eb0cf5a71b513ef5592dbf9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Franti=C5=A1ek=20Zatloukal?= <fzatlouk(a)redhat.com>
+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 | 17 +----------------
+ 3 files changed, 3 insertions(+), 18 deletions(-)
+
+diff --git a/js/src/jit-test/jit_test.py b/js/src/jit-test/jit_test.py
+index f5d7794..8d443aa 100755
+--- a/js/src/jit-test/jit_test.py
++++ b/js/src/jit-test/jit_test.py
+@@ -38,7 +38,7 @@ from lib.tests import (
+ get_environment_overlay,
+ change_env,
+ )
+-from lib.tempfile import TemporaryDirectory
++from tempfile import TemporaryDirectory
+
+
+ def which(name):
+diff --git a/js/src/tests/jstests.py b/js/src/tests/jstests.py
+index 6fa2f5f..53ceff6 100755
+--- a/js/src/tests/jstests.py
++++ b/js/src/tests/jstests.py
+@@ -37,7 +37,7 @@ from lib.tests import (
+ from lib.results import ResultsSink, TestOutput
+ from lib.progressbar import ProgressBar
+ from lib.adaptor import xdr_annotate
+-from lib.tempfile import TemporaryDirectory
++from tempfile import TemporaryDirectory
+
+ if sys.platform.startswith("linux") or
sys.platform.startswith("darwin"):
+ from lib.tasks_unix import run_all_tests
+diff --git a/js/src/tests/lib/tempfile.py b/js/src/tests/lib/tempfile.py
+index ecc21c9..f0a1fa3 100644
+--- a/js/src/tests/lib/tempfile.py
++++ b/js/src/tests/lib/tempfile.py
+@@ -2,19 +2,4 @@
+ # 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/.
+ from __future__ import absolute_import
+-
+-try:
+- # Python 3.2
+- from tempfile import TemporaryDirectory
+-except ImportError:
+- import tempfile
+- import shutil
+- 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.31.1
+
diff --git a/tests-increase-timeout.patch b/tests-increase-timeout.patch
new file mode 100644
index 0000000..c86cca4
--- /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?= <fzatlouk(a)redhat.com>
+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 b86aeed..d68655a 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_SHELL_NAME)$(BIN_SUFFIX)
+
+--
+2.26.2
+