Skip to content
Permalink
Browse files
feat: initial js68 support
  • Loading branch information
diannasoreil authored and kocolosk committed Feb 7, 2022
1 parent 7a653fa commit 7c7eb6dc0f181f717872bbce9a8a7e2a00dccaa4
Showing 19 changed files with 734 additions and 0 deletions.
@@ -25,3 +25,4 @@ stage/
*.tar.gz
*.bak
*~
.idea/
@@ -243,3 +243,8 @@ couch-js-rpms: couch-js-clean
cp js/src/js185-1.0.0.tar.gz ../rpmbuild/SOURCES
cd ../rpmbuild && rpmbuild --verbose -bb SPECS/js.spec

couch-js-68-rpms: couch-js-clean
mkdir -p ../rpmbuild
cp -R js68/* ../rpmbuild
cd ../rpmbuild/SOURCES && curl -O https://ftp.mozilla.org/pub/firefox/releases/68.12.0esr/source/firefox-68.12.0esr.source.tar.xz
cd ../rpmbuild && rpmbuild --verbose -bb SPECS/js68.spec
@@ -0,0 +1,29 @@
From b9e1976edca1af828a219d5ac35d07202170e5ba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Franti=C5=A1ek=20Zatloukal?= <fzatlouk@redhat.com>
Date: Mon, 24 Aug 2020 15:45:36 +0200
Subject: [PATCH] Exclude failing tests on s390x

---
js/src/tests/jstests.list | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/js/src/tests/jstests.list b/js/src/tests/jstests.list
index 8f5c0df..75f80f8 100644
--- a/js/src/tests/jstests.list
+++ b/js/src/tests/jstests.list
@@ -493,6 +493,12 @@ skip script test262/language/expressions/class/elements/derived-cls-direct-eval-
skip script test262/language/statements/class/elements/derived-cls-direct-eval-err-contains-superproperty-1.js
skip script test262/language/statements/class/elements/derived-cls-direct-eval-err-contains-superproperty-2.js

+# Crashes on s390x and ppc64, avoid it
+skip-if(xulRuntime.XPCOMABI.match(/s390x|ppc64-/)) script non262/extensions/clone-errors.js
+
+# Crashes on s390x
+skip-if(xulRuntime.XPCOMABI.match(/s390x/)) script test262/built-ins/TypedArray/prototype/set/typedarray-arg-set-values-same-buffer-other-type.js
+skip-if(xulRuntime.XPCOMABI.match(/s390x/)) script non262/Intl/DateTimeFormat/timeZone_backward_links.js

###########################################################
# Tests disabled due to issues in test262 importer script #
--
2.26.2

@@ -0,0 +1,72 @@
Description: Remove unused LLVM and Rust build dependencies
Since the Javascript engine is normally part of Firefox, its build
system has dependencies on the LLVM and Rust toolchains. This limits
the number of architectures which mozjs68 can be built on.
.
It turns out, however, that neither LLVM nor Rust are used when mozjs68
is being built and these build dependencies are therefore not necessary.
.
This patch removes them and allows mozjs68 to be built on any architecture.
.
Author: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=959144
Forwarded: no
Last-Update: 2020-04-30

Index: mozjs68-68.6.0/js/moz.configure
===================================================================
--- mozjs68-68.6.0.orig/js/moz.configure
+++ mozjs68-68.6.0/js/moz.configure
@@ -18,11 +18,6 @@ def building_js(build_project):
option(env='JS_STANDALONE', default=building_js,
help='Reserved for internal use')

-include('../build/moz.configure/rust.configure',
- when='--enable-compile-environment')
-include('../build/moz.configure/bindgen.configure',
- when='--enable-compile-environment')
-
@depends('JS_STANDALONE')
def js_standalone(value):
if value:
Index: mozjs68-68.6.0/moz.configure
===================================================================
--- mozjs68-68.6.0.orig/moz.configure
+++ mozjs68-68.6.0/moz.configure
@@ -598,36 +598,6 @@ set_config('MAKENSISU_FLAGS', nsis_flags

check_prog('7Z', ('7z', '7za'), allow_missing=True, when=target_is_windows)

-
-@depends(host_c_compiler, c_compiler, bindgen_config_paths)
-def llvm_objdump(host_c_compiler, c_compiler, bindgen_config_paths):
- clang = None
- for compiler in (host_c_compiler, c_compiler):
- if compiler and compiler.type == 'clang':
- clang = compiler.compiler
- break
- elif compiler and compiler.type == 'clang-cl':
- clang = os.path.join(os.path.dirname(compiler.compiler), 'clang')
- break
-
- if not clang and bindgen_config_paths:
- clang = bindgen_config_paths.clang_path
- llvm_objdump = 'llvm-objdump'
- if clang:
- out = check_cmd_output(clang, '--print-prog-name=llvm-objdump',
- onerror=lambda: None)
- if out:
- llvm_objdump = out.rstrip()
- return (llvm_objdump,)
-
-
-llvm_objdump = check_prog('LLVM_OBJDUMP', llvm_objdump, what='llvm-objdump',
- when='--enable-compile-environment',
- paths=toolchain_search_path)
-
-add_old_configure_assignment('LLVM_OBJDUMP', llvm_objdump)
-
-
# Please do not add configure checks from here on.

# Fallthrough to autoconf-based configure
@@ -0,0 +1,10 @@
--- firefox-68.0/js/src/wasm/WasmSignalHandlers.cpp
+++ firefox-68.0/js/src/wasm/WasmSignalHandlers.cpp
@@ -243,7 +243,7 @@
// If you run into compile problems on a tier-3 platform, you can disable the
// emulation here.

-#if defined(__linux__) && defined(__arm__)
+#if 0 && defined(__linux__) && defined(__arm__)
# define WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS
#endif
@@ -0,0 +1,12 @@
diff -up firefox-68.0/build/autoconf/icu.m4.icu firefox-68.0/build/autoconf/icu.m4
--- firefox-68.0/build/autoconf/icu.m4.icu 2018-04-24 13:13:03.938961958 +0200
+++ firefox-68.0/build/autoconf/icu.m4 2018-04-24 13:14:44.472714375 +0200
@@ -78,7 +78,7 @@
# TODO: the l is actually endian-dependent
# We could make this set as 'l' or 'b' for little or big, respectively,
# but we'd need to check in a big-endian version of the file.
- ICU_DATA_FILE="icudt${version}l.dat"
+ ICU_DATA_FILE="icudt${version}b.dat"
fi

AC_SUBST(MOZ_ICU_VERSION)
@@ -0,0 +1,29 @@
From: Rico Tzschichholz <ricotz@ubuntu.com>
Date: Wed, 5 Jul 2017 22:45:59 -0700
Subject: build: Copy headers on install instead of symlinking

Patch ported forward to mozjs52 by Philip Chimento
<philip.chimento@gmail.com>.
---
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 dd9020d..6918ef8 100644
--- a/python/mozbuild/mozbuild/backend/recursivemake.py
+++ b/python/mozbuild/mozbuild/backend/recursivemake.py
@@ -1427,11 +1427,11 @@ class RecursiveMakeBackend(CommonBackend):
raise Exception("Wildcards are only supported in the filename part of "
"srcdir-relative or absolute paths.")

- install_manifest.add_pattern_link(basepath, wild, path)
+ install_manifest.add_pattern_copy(basepath, wild, path)
else:
- install_manifest.add_pattern_link(f.srcdir, f, path)
+ install_manifest.add_pattern_copy(f.srcdir, f, path)
else:
- install_manifest.add_link(f.full_path, dest)
+ install_manifest.add_copy(f.full_path, dest)
else:
install_manifest.add_optional_exists(dest)
backend_file.write('%s_FILES += %s\n' % (
@@ -0,0 +1,14 @@
--- a/python/mozbuild/mozbuild/frontend/emitter.py
+++ b/python/mozbuild/mozbuild/frontend/emitter.py
@@ -1195,11 +1195,6 @@
raise SandboxValidationError('Path specified in LOCAL_INCLUDES '
'is a filename, but a directory is required: %s '
'(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
@@ -0,0 +1,27 @@
--- a/python/mozbuild/mozbuild/test/frontend/test_emitter.py
+++ b/python/mozbuild/mozbuild/test/frontend/test_emitter.py
@@ -1051,24 +1051,6 @@

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 self.assertRaisesRegexp(
- SandboxValidationError,
- 'Path specified in LOCAL_INCLUDES.*resolves to the '
- 'topsrcdir or topobjdir'):
- objs = self.read_topsrcdir(reader)
-
- reader = self.reader('local_includes-invalid/objdir')
-
- with self.assertRaisesRegexp(
- SandboxValidationError,
- 'Path specified in LOCAL_INCLUDES.*resolves to the '
- 'topsrcdir or topobjdir'):
- objs = 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')
@@ -0,0 +1,25 @@
From: "Laszlo Boszormenyi (GCS)" <gcs@debian.org>
Date: Fri, 2 May 2014 22:20:45 +0200
Subject: fix soname

Add soname switch to linker, regardless of Operating System

Bug-Debian: http://bugs.debian.org/746705
---
config/rules.mk | 3 +++
1 file changed, 3 insertions(+)

diff --git a/config/rules.mk b/config/rules.mk
index eb86b0c..1bb3988 100644
--- a/config/rules.mk
+++ b/config/rules.mk
@@ -359,6 +359,9 @@ endif
endif
EXTRA_DEPS += $(SYMBOLS_FILE)
endif
+
+EXTRA_DSO_LDOPTS += -Wl,-soname,lib$(JS_LIBRARY_NAME).so.0
+
#
# GNU doesn't have path length limitation
#
@@ -0,0 +1,34 @@
From: Simon McVittie <smcv@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 | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/intl/icu_sources_data.py b/intl/icu_sources_data.py
index 8cf9290..7d2d983 100644
--- a/intl/icu_sources_data.py
+++ b/intl/icu_sources_data.py
@@ -187,16 +187,13 @@

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)
+ subprocess.check_call(command, cwd=cwd, stdout=sys.stderr,
+ stderr=subprocess.STDOUT, **kwargs)
except subprocess.CalledProcessError:
- print('''Error running "{}" in directory {}
- See output in {}'''.format(' '.join(command), cwd, f.name),
- file=sys.stderr)
+ print('''Error running "{}" in directory {}'''.format(' '.join(command), cwd),
+ file=sys.stderr)
return False
else:
- os.unlink(f.name)
return True
@@ -0,0 +1,26 @@
From: Simon McVittie <smcv@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 98c0ccb..8cf9290 100644
--- a/intl/icu_sources_data.py
+++ b/intl/icu_sources_data.py
@@ -21,7 +21,9 @@
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
@@ -0,0 +1,13 @@
--- a/python/mozbuild/mozbuild/configure/__init__.py
+++ b/python/mozbuild/mozbuild/configure/__init__.py
@@ -473,8 +473,8 @@
msg = 'Unknown option: %s' % without_value
if self._help:
self._logger.warning(msg)
- else:
- raise InvalidOptionError(msg)
+ #else:
+ # raise InvalidOptionError(msg)

# Run the execution queue
for func, args in self._execution_queue:
@@ -0,0 +1,57 @@
From e75a1c531767f3efd158fd8309084cf5157307be Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Franti=C5=A1ek=20Zatloukal?= <fzatlouk@redhat.com>
Date: Tue, 5 Nov 2019 19:14:38 +0100
Subject: [PATCH] Python 3

---
js/src/jit-test/jit_test.py | 2 +-
js/src/tests/lib/manifest.py | 5 ++++-
js/src/tests/lib/tasks_unix.py | 3 +++
3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/js/src/jit-test/jit_test.py b/js/src/jit-test/jit_test.py
index 8fcd0c5..f51c544 100755
--- a/js/src/jit-test/jit_test.py
+++ b/js/src/jit-test/jit_test.py
@@ -138,7 +138,7 @@ def main(argv):
help='With --write-failures=FILE, additionally write the'
' output of failed tests to [FILE]')
op.add_option('--jitflags', dest='jitflags', default='none',
- choices=valid_jitflags(),
+ choices=list(valid_jitflags()),
help='IonMonkey option combinations. One of %s.' % ', '.join(valid_jitflags()))
op.add_option('--ion', dest='jitflags', action='store_const', const='ion',
help='Run tests once with --ion-eager and once with'
diff --git a/js/src/tests/lib/manifest.py b/js/src/tests/lib/manifest.py
index 617f0f1..f54cc1e 100644
--- a/js/src/tests/lib/manifest.py
+++ b/js/src/tests/lib/manifest.py
@@ -105,7 +105,10 @@ class XULInfoTester:
'-e', self.js_prologue,
'-e', 'print(!!({}))'.format(cond)
]
- p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE)
+ try:
+ p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE, encoding="utf-8")
+ except TypeError:
+ p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE)
out, err = p.communicate()
if out in ('true\n', 'true\r\n'):
ans = True
diff --git a/js/src/tests/lib/tasks_unix.py b/js/src/tests/lib/tasks_unix.py
index 40528b8..5edfe92 100644
--- a/js/src/tests/lib/tasks_unix.py
+++ b/js/src/tests/lib/tasks_unix.py
@@ -182,6 +182,9 @@ def reap_zombies(tasks, timeout):
if os.WIFSIGNALED(status):
returncode = -os.WTERMSIG(status)

+ ended.out=[x.decode('utf-8') for x in ended.out]
+ ended.err=[x.decode('utf-8') for x in ended.err]
+
finished.append(
TestOutput(
ended.test,
--
2.23.0

@@ -0,0 +1 @@
SHA512 (firefox-68.12.0esr.source.tar.xz) = 839b02422e4c87bdb12e0995cd35ca8c1996f3fba00bbb46b419e46b67df5ec48a264cb14632db777ce29166ee4fdcb06e2ee3ce847e64328c58c9a2f9129f4c
@@ -0,0 +1,10 @@
--- a/config/run_spidermonkey_checks.py
+++ b/config/run_spidermonkey_checks.py
@@ -11,5 +11,5 @@
for script in scripts:
retcode = subprocess.call(
[sys.executable, script], cwd=buildconfig.topsrcdir)
- if retcode != 0:
- raise Exception(script + " failed")
+ #if retcode != 0:
+ # raise Exception(script + " failed")
@@ -0,0 +1,11 @@
--- a/config/check_spidermonkey_style.py
+++ b/config/check_spidermonkey_style.py

@@ -766,6 +766,7 @@


def main():
+ sys.exit(0)
if sys.argv[1:] == ["--fixup"]:
# Sort #include directives in-place. Fixup mode doesn't solve
# all possible silliness that the script checks for; it's just a

0 comments on commit 7c7eb6d

Please sign in to comment.