Hello community, here is the log from the commit of package mozjs60 for openSUSE:Factory checked in at 2020-01-02 14:40:49 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/mozjs60 (Old) and /work/SRC/openSUSE:Factory/.mozjs60.new.6675 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mozjs60" Thu Jan 2 14:40:49 2020 rev:11 rq:760235 version:60.9.0 Changes: -------- --- /work/SRC/openSUSE:Factory/mozjs60/mozjs60.changes 2019-12-25 10:46:09.709386941 +0100 +++ /work/SRC/openSUSE:Factory/.mozjs60.new.6675/mozjs60.changes 2020-01-02 14:40:56.508902320 +0100 @@ -1,0 +2,43 @@ +Mon Dec 30 13:44:54 UTC 2019 - Frederic Crozat <fcro...@suse.com> + +- Add skip-i586-failing-tests.patch: disable tests on i586 which + require SSE / i686 (boo#1159775). + +------------------------------------------------------------------- +Thu Dec 19 09:16:19 UTC 2019 - Frederic Crozat <fcro...@suse.com> + +- SLE 15 SP2 will ship with ICU 65, apply patches accordingly + (jsc#SLE-11118). + +------------------------------------------------------------------- +Fri Dec 13 12:56:05 UTC 2019 - Frederic Crozat <fcro...@suse.com> + +- Remove Update-to-ICU-64-Part-3-Update-tests.patch, SLE is back to + ICU 60.x. + +------------------------------------------------------------------- +Tue Dec 10 09:28:06 UTC 2019 - Frederic Crozat <fcro...@suse.com> + +- Add Don-t-run-non262-extensions-clone-errors.js-on-s390x.patch, + based on Debian patch, to enable back tests on s390x (and ppc64). +- Add tests-Expect-a-test-to-fail-on-big-endian.patch, based on + Debian patch, accept a test failure on big-endian like s390x. +- enable back tests on s390x and i586 +- Remove build workaround on ppc64le. +- Reorder/change build flags to follow Debian and Fedora. +- Enable back tests on all platforms (except JIT on s390). +- Ensure we don't build bundled security libs. +- Don't ship a icu bundle for big-endian, recreate it instead, with + patches icu_sources_data-Write-command-output-to-our-stderr.patch + and icu_sources_data.py-Decouple-from-Mozilla-build-system.patch. +- Update patch enddianness.patch with more fixes from + bmo#1590907 to fix strings usage on s390x (bsc#1158355). +- Add Skip-some-i18n-tests-because-we-are-now-using-system-ICU.patch + Update-to-ICU-61-Part-3-Update-tests.patch, + Update-to-ICU-64-Part-3-Update-tests.patch, + Update-to-ICU-65-Part-3-Update-tests.patch to allow building + with system icu +- Add flag to switch between system icu and embedded icu and + enable system icu. + +------------------------------------------------------------------- Old: ---- icudt60b.dat.xz New: ---- Don-t-run-non262-extensions-clone-errors.js-on-s390x.patch Skip-some-i18n-tests-because-we-are-now-using-system-ICU.patch Update-to-ICU-61-Part-3-Update-tests.patch Update-to-ICU-65-Part-3-Update-tests.patch icu_sources_data-Write-command-output-to-our-stderr.patch icu_sources_data.py-Decouple-from-Mozilla-build-system.patch skip-i586-failing-tests.patch tests-Expect-a-test-to-fail-on-big-endian.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mozjs60.spec ++++++ --- /var/tmp/diff_new_pack.QS3mOw/_old 2020-01-02 14:41:01.072904123 +0100 +++ /var/tmp/diff_new_pack.QS3mOw/_new 2020-01-02 14:41:01.072904123 +0100 @@ -1,7 +1,7 @@ # # spec file for package mozjs60 # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LLC # Copyright (c) 2018 Luciano Santos <luc1...@linuxmail.org>. # # All modifications and additions to the file contributed by third parties @@ -17,6 +17,10 @@ # +# use system icu +# keep fallback if something goes wrong +%bcond_without system_icu + %global major 60 Name: mozjs%{major} Version: 60.9.0 @@ -27,9 +31,6 @@ URL: https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey Source0: https://ftp.mozilla.org/pub/firefox/releases/%{version}esr/source/firefox-%{version}esr.source.tar.xz Source1: LICENSE.txt -# This should be removed when bmo#1322212 and bmo#1264836 are resolved: -# Missing ICU big-endian data file in firefox source: -Source2: icudt60b.dat.xz Patch0: mozjs60-fix-armv6-build.patch Patch1: mozjs60-mozilla-s390-bigendian.patch Patch2: riscv-support.patch @@ -46,6 +47,22 @@ # aarch64 fixes for -O2 Patch9: Save-x28-before-clobbering-it-in-the-regex-compiler.patch Patch10: Save-and-restore-non-volatile-x28-on-ARM64-for-generated-unboxed-object-constructor.patch +# based on https://salsa.debian.org/gnome-team/mozjs60/blob/debian/master/debian/patches/tests-Skip-a-test-on-s390x.patch +Patch11: Don-t-run-non262-extensions-clone-errors.js-on-s390x.patch +# based on https://salsa.debian.org/gnome-team/mozjs60/blob/debian/master/debian/patches/tests-Expect-a-test-to-fail-on-big-endian.patch +Patch12: tests-Expect-a-test-to-fail-on-big-endian.patch +# https://salsa.debian.org/gnome-team/mozjs60/blob/debian/master/debian/patches/icu_sources_data.py-Decouple-from-Mozilla-build-system.patch +Patch13: icu_sources_data.py-Decouple-from-Mozilla-build-system.patch +# https://salsa.debian.org/gnome-team/mozjs60/blob/debian/master/debian/patches/icu_sources_data-Write-command-output-to-our-stderr.patch +Patch14: icu_sources_data-Write-command-output-to-our-stderr.patch +# https://salsa.debian.org/gnome-team/mozjs60/blob/debian/master/debian/patches/Skip-some-i18n-tests-because-we-are-now-using-system-ICU.patch +Patch15: Skip-some-i18n-tests-because-we-are-now-using-system-ICU.patch +# https://salsa.debian.org/gnome-team/mozjs60/blob/debian/master/debian/patches/Update-to-ICU-61-Part-3-Update-tests.patch +Patch16: Update-to-ICU-61-Part-3-Update-tests.patch +# fix testsuite when built with ICU 65 https://phabricator.services.mozilla.com/D49445 https://unicode-org.atlassian.net/browse/ICU-20654 +Patch17: Update-to-ICU-65-Part-3-Update-tests.patch +# fix testsuite when building on i586 (some tests requires SSE / i686) boo#1159775 +Patch18: skip-i586-failing-tests.patch BuildRequires: autoconf213 BuildRequires: gcc-c++ @@ -56,6 +73,9 @@ BuildRequires: readline-devel BuildRequires: pkgconfig(libffi) BuildRequires: pkgconfig(zlib) +%if %{with system_icu} +BuildRequires: pkgconfig(icu-i18n) +%endif %description JavaScript is the Netscape-developed object scripting language used in millions @@ -106,16 +126,34 @@ %patch8 -p1 %patch9 -p1 %patch10 -p1 +%patch11 -p1 +%patch12 -p1 +%patch13 -p1 +%patch14 -p1 +%patch15 -p1 +%if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150200 +# only supported with ICU >= 61 +%patch16 -p1 +# only supported with ICU >= 65 (https://unicode-org.atlassian.net/browse/ICU-20654) +%patch17 -p1 +%endif +%patch18 -p1 + +# make sure we don't ever accidentally link against bundled security libs +rm -rf security/ # Remove zlib directory to make sure the use of zlib from distro: rm -rf modules/zlib -cd js/src # FIX-ME: This should be removed when bmo#1322212 and bmo#1264836 are resolved: -xz -dk %{SOURCE2} -DATFILE=%{SOURCE2} -DATFILE="${DATFILE%.xz}" -mv -v ${DATFILE} ../../config/external/icu/data/ +%if !%{with system_icu} +%ifarch s390 s390x ppc ppc64 m68k +echo "Generate big endian version of config/external/icu/data/icud58l.dat" +python intl/icu_sources_data.py . +ls -l config/external/icu/data +rm -f config/external/icu/data/icudt*l.dat +%endif +%endif %build cd js/src @@ -124,17 +162,8 @@ DATE="\"$(date -d "${modified}" "+%%b %%e %%Y")\"" TIME="\"$(date -d "${modified}" "+%%R")\"" find . -regex ".*\.c\|.*\.cpp\|.*\.h" -exec sed -i "s/__DATE__/${DATE}/g;s/__TIME__/${TIME}/g" {} + -# -# Add extra cflags for Power8 ppc64le compiling with gcc7+ (bmo#1399248) -%ifarch ppc64le -GCCVER=`gcc --version | sed "s/.* \([0-9]\.[0-9]\.[0-9]\).*/\1/" | head -n1` -if [ ${GCCVER} > "7.0" ]; then -XTRA_CFLAGS="-mcpu=power7 -mtune=power7" -fi -%endif -# -# Disable null pointer gcc6 optimization in gcc6 (rhbz#1328045): -export CFLAGS="%{optflags} -fno-tree-vrp -fno-strict-aliasing -fno-delete-null-pointer-checks ${XTRA_CFLAGS}" + +export CFLAGS="%{optflags}" export CXXFLAGS=$CFLAGS autoconf-2.13 # An out of source directory build is wanted here to prevent failures: @@ -144,21 +173,21 @@ --prefix=%{_prefix} \ --libdir=%{_libdir} \ --includedir=%{_includedir} \ - --enable-optimize \ - --enable-pie \ +%if %{with system_icu} + --with-system-icu \ +%else + --without-system-icu \ +%endif --enable-posix-nspr-emulation \ + --with-system-zlib \ + --enable-tests \ + --disable-strip \ + --with-intl-api \ --enable-readline \ --enable-shared-js \ - --enable-release \ - --with-intl-api \ - --with-pthreads \ + --disable-optimize \ + --enable-pie \ --disable-jemalloc \ - --without-system-icu \ - --with-system-zlib \ - -# Without adding these sources resulted library has weak symbols: -#echo "CPPSRCS += \$(DEPTH)/mfbt/Unified_cpp_mfbt0.cpp \$(DEPTH)/../../mfbt/Compression.cpp \$(DEPTH)/../../mfbt/decimal/Decimal.cpp" >> js/src/backend.mk -#echo "STATIC_LIBS += \$(DEPTH)/mfbt/libmfbt.a" >> js/src/backend.mk # do not eat all memory %limit_build -m 1300 @@ -170,7 +199,9 @@ %make_install # Remove unneeded executable bits: chmod a-x %{buildroot}%{_libdir}/pkgconfig/*.pc \ +%if !%{with system_icu} %{buildroot}%{_includedir}/mozjs-%{major}/unicode/selfmt.h \ +%endif %{buildroot}%{_includedir}/mozjs-%{major}/js-config.h # Do not install static libraries: rm -f %{buildroot}%{_libdir}/*.a %{buildroot}%{_libdir}/*.ajs %{buildroot}%{_bindir}/js-config @@ -187,19 +218,24 @@ install -m 644 %{SOURCE1} . %check -## Tests are currently (60.1.0) failing -#cd js/src/build_OPT.OBJ +# NEVER DISABLE THOSE TESTS : if they aren't passing, something is wrong, +# don't submit with tests disabled +cd js/src/build_OPT.OBJ # Run SpiderMonkey tests: -#../tests/jstests.py -d -s -t 1800 --no-progress ../build_OPT.OBJ/js/src/shell/js \ -%ifnarch s390 s390x ppc %{power64} -#; +../tests/jstests.py -d -s -t 1800 --no-progress ../build_OPT.OBJ/js/src/shell/js \ +%ifnarch s390 +; %else -#|| : +|| : %endif -# Run basic JIT tests. JIT is disabled on s390 and ppc (see bmo#1415360 comment 6): -%ifnarch s390 s390x ppc %{power64} -#../jit-test/jit_test.py -s -t 1800 --no-progress ../build_OPT.OBJ/js/src/shell/js basic +# this test doesn't pass on i586, kill it +%ifarch i586 +rm -f ../jit-test/tests/basic/bug653153.js +%endif +# Run basic JIT tests. JIT is disabled on s390 (see bmo#1415360 comment 6): +%ifnarch s390 +../jit-test/jit_test.py -s -t 1800 --no-progress ../build_OPT.OBJ/js/src/shell/js basic %endif %post -n libmozjs-%{major} -p /sbin/ldconfig ++++++ Don-t-run-non262-extensions-clone-errors.js-on-s390x.patch ++++++ Index: firefox-60.9.0/js/src/tests/jstests.list =================================================================== --- firefox-60.9.0.orig/js/src/tests/jstests.list 2019-12-10 11:03:40.064246162 +0100 +++ firefox-60.9.0/js/src/tests/jstests.list 2019-12-10 11:04:22.464247245 +0100 @@ -447,6 +447,10 @@ # https://bugzilla.mozilla.org/show_bug.cgi?id=1321616 skip script test262/annexB/built-ins/Function/createdynfn-html-close-comment-params.js +# Crashes on s390x and ppc64, avoid it +# +skip-if(xulRuntime.XPCOMABI.match(/s390x|ppc64-/)) script non262/extensions/clone-errors.js + ########################################################### # Tests disabled due to issues in test262 importer script # ++++++ Skip-some-i18n-tests-because-we-are-now-using-system-ICU.patch ++++++ From: Simon McVittie <s...@debian.org> Date: Wed, 12 Sep 2018 09:46:34 +0100 Subject: Skip some i18n tests because we are now using system ICU Forwarded: not-needed, Debian-specific --- js/src/tests/jstests.list | 4 ++++ 1 file changed, 4 insertions(+) Index: firefox-60.9.0/js/src/tests/jstests.list =================================================================== --- firefox-60.9.0.orig/js/src/tests/jstests.list 2019-12-10 09:57:46.072145154 +0100 +++ firefox-60.9.0/js/src/tests/jstests.list 2019-12-10 09:57:48.344145212 +0100 @@ -454,6 +454,10 @@ # Assumes little-endian IEEE representation of floating point numbers fails-if(xulRuntime.XPCOMABI.match(/s390x|ppc64-|ppc-/)) script test262/built-ins/TypedArray/prototype/set/typedarray-arg-set-values-same-buffer-other-type.js +# Fails with system ICU due to different data? +skip script non262/Intl/DateTimeFormat/tz-environment-variable.js +skip script non262/Intl/NumberFormat/formatToParts.js + ########################################################### # Tests disabled due to issues in test262 importer script # ########################################################### ++++++ Update-to-ICU-61-Part-3-Update-tests.patch ++++++ From: =?utf-8?q?Andr=C3=A9_Bargull?= <andre.barg...@gmail.com> Date: Tue, 27 Mar 2018 07:40:40 -0700 Subject: Update to ICU 61, Part 3: Update tests Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1445465 Applied-upstream: 61, commit:https://hg.mozilla.org/mozilla-central/rev/3214fb35ccd6 --- .../tests/non262/Intl/NumberFormat/StringBuffer.js | 26 +++++++++++++++++++--- .../non262/Intl/NumberFormat/formatToParts.js | 1 - 2 files changed, 23 insertions(+), 4 deletions(-) Index: mozjs-60.8.0/js/src/tests/non262/Intl/NumberFormat/StringBuffer.js =================================================================== --- mozjs-60.8.0.orig/js/src/tests/non262/Intl/NumberFormat/StringBuffer.js +++ mozjs-60.8.0/js/src/tests/non262/Intl/NumberFormat/StringBuffer.js @@ -10,8 +10,28 @@ var format = new Intl.NumberFormat("it-IT", {minimumFractionDigits: 1}); -assertEq(format.format(1123123123123123123123.1), "1.123.123.123.123.120.000.000,0"); -assertEq(format.format(12123123123123123123123.1), "12.123.123.123.123.100.000.000,0"); -assertEq(format.format(123123123123123123123123.1), "123.123.123.123.123.000.000.000,0"); +assertEq(format.format(1123123123123123123123.1), "1.123.123.123.123.123.100.000,0"); +assertEq(format.format(12123123123123123123123.1), "12.123.123.123.123.122.000.000,0"); +assertEq(format.format(123123123123123123123123.1), "123.123.123.123.123.120.000.000,0"); + +// Ensure the ICU output matches Number.prototype.toFixed. +function formatToFixed(x) { + var mfd = format.resolvedOptions().maximumFractionDigits; + var s = x.toFixed(mfd); + + // To keep it simple we assume |s| is always in exponential form. + var m = s.match(/^(\d)\.(\d+)e\+(\d+)$/); + assertEq(m !== null, true); + s = m[1] + m[2].padEnd(m[3], "0"); + + // Group digits and append fractional part. + m = s.match(/\d{1,3}(?=(?:\d{3})*$)/g); + assertEq(m !== null, true); + return m.join(".") + ",0"; +} + +assertEq(formatToFixed(1123123123123123123123.1), "1.123.123.123.123.123.100.000,0"); +assertEq(formatToFixed(12123123123123123123123.1), "12.123.123.123.123.122.000.000,0"); +assertEq(formatToFixed(123123123123123123123123.1), "123.123.123.123.123.120.000.000,0"); reportCompare(0, 0, "ok"); Index: mozjs-60.8.0/js/src/tests/non262/Intl/NumberFormat/formatToParts.js =================================================================== --- mozjs-60.8.0.orig/js/src/tests/non262/Intl/NumberFormat/formatToParts.js +++ mozjs-60.8.0/js/src/tests/non262/Intl/NumberFormat/formatToParts.js @@ -215,7 +215,6 @@ assertParts(arPercentFormatter, -135.32, Integer("٥٣٢"), Decimal("٫"), Fraction("٠٠"), - Literal("\xA0"), PercentSign("٪\u{061C}")]); // Decimals. ++++++ Update-to-ICU-65-Part-3-Update-tests.patch ++++++ >From d2125e5768325579866948baf295477e3f67c550 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bargull?= <andre.barg...@gmail.com> Date: Tue, 22 Oct 2019 08:36:58 +0000 Subject: [PATCH] Bug 1583269 - Part 3: Update tests after ICU update. r=jwalden MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit js/src/tests/jstests.list - Enable now passing test262 tests. non262/Intl/RelativeTimeFormat/format.js - "minute" and "hour" are now supported in 'text' contexts for relative time formatting. - Also see the now passing test262 tests. non262/Intl/NumberFormat/currency-sign-accounting.js non262/Intl/NumberFormat/sign-display.js - Referenced ICU bug has been fixed in ICU 65. non262/Intl/NumberFormat/notation-compact-short.js - 万亿 is preferred over 兆 in mainland China; CLDR sources were updated accordingly. non262/Intl/NumberFormat/notation-engineering.js non262/Intl/NumberFormat/notation-scientific.js - ICU removed "E0" suffix for non-finite numbers in engineering and scientific contexts. Differential Revision: https://phabricator.services.mozilla.com/D49445 --HG-- extra : moz-landing-system : lando --- js/src/tests/jstests.list | 4 ---- .../tests/non262/Intl/ListFormat/conjunction-long.js | 2 +- .../Intl/NumberFormat/currency-sign-accounting.js | 3 +-- .../non262/Intl/NumberFormat/notation-compact-short.js | 10 +++++----- .../non262/Intl/NumberFormat/notation-engineering.js | 8 ++++---- .../non262/Intl/NumberFormat/notation-scientific.js | 8 ++++---- js/src/tests/non262/Intl/NumberFormat/sign-display.js | 3 +-- js/src/tests/non262/Intl/RelativeTimeFormat/format.js | 8 ++++---- 8 files changed, 20 insertions(+), 26 deletions(-) Index: firefox-60.9.0/js/src/tests/non262/Intl/RelativeTimeFormat/format.js =================================================================== --- firefox-60.9.0.orig/js/src/tests/non262/Intl/RelativeTimeFormat/format.js 2019-09-01 15:09:18.000000000 +0200 +++ firefox-60.9.0/js/src/tests/non262/Intl/RelativeTimeFormat/format.js 2019-12-09 17:36:51.720845023 +0100 @@ -58,13 +58,13 @@ assertEq(rtf.format(-1, "second"), "1 second ago"); assertEq(rtf.format(1, "second"), "in 1 second"); - assertEq(rtf.format(0, "minute"), "in 0 minutes"); - assertEq(rtf.format(-0, "minute"), "in 0 minutes"); + assertEq(rtf.format(0, "minute"), "this minute"); + assertEq(rtf.format(-0, "minute"), "this minute"); assertEq(rtf.format(-1, "minute"), "1 minute ago"); assertEq(rtf.format(1, "minute"), "in 1 minute"); - assertEq(rtf.format(0, "hour"), "in 0 hours"); - assertEq(rtf.format(-0, "hour"), "in 0 hours"); + assertEq(rtf.format(0, "hour"), "this hour"); + assertEq(rtf.format(-0, "hour"), "this hour"); assertEq(rtf.format(-1, "hour"), "1 hour ago"); assertEq(rtf.format(1, "hour"), "in 1 hour"); ++++++ enddianness.patch ++++++ --- /var/tmp/diff_new_pack.QS3mOw/_old 2020-01-02 14:41:01.140904151 +0100 +++ /var/tmp/diff_new_pack.QS3mOw/_new 2020-01-02 14:41:01.140904151 +0100 @@ -11,11 +11,11 @@ js/src/vm/StringType.h | 13 +++++++++++++ 4 files changed, 49 insertions(+), 1 deletion(-) -diff --git a/js/src/gc/Marking-inl.h b/js/src/gc/Marking-inl.h -index 6d2a4c7..c773c21 100644 ---- a/js/src/gc/Marking-inl.h -+++ b/js/src/gc/Marking-inl.h -@@ -82,12 +82,28 @@ inline void RelocationOverlay::forwardTo(Cell* cell) { +Index: firefox-60.9.0/js/src/gc/Marking-inl.h +=================================================================== +--- firefox-60.9.0.orig/js/src/gc/Marking-inl.h 2019-09-01 15:09:17.000000000 +0200 ++++ firefox-60.9.0/js/src/gc/Marking-inl.h 2019-12-09 11:42:31.024301901 +0100 +@@ -82,12 +82,28 @@ MOZ_ASSERT(!isForwarded()); // The location of magic_ is important because it must never be valid to see // the value Relocated there in a GC thing that has not been moved. @@ -44,11 +44,11 @@ static_assert( offsetof(RelocationOverlay, magic_) == offsetof(JSString, d.u1.length), "RelocationOverlay::magic_ is in the wrong location"); -diff --git a/js/src/gc/RelocationOverlay.h b/js/src/gc/RelocationOverlay.h -index a568843..399a541 100644 ---- a/js/src/gc/RelocationOverlay.h -+++ b/js/src/gc/RelocationOverlay.h -@@ -33,14 +33,25 @@ class RelocationOverlay { +Index: firefox-60.9.0/js/src/gc/RelocationOverlay.h +=================================================================== +--- firefox-60.9.0.orig/js/src/gc/RelocationOverlay.h 2019-09-01 15:09:17.000000000 +0200 ++++ firefox-60.9.0/js/src/gc/RelocationOverlay.h 2019-12-09 11:42:31.024301901 +0100 +@@ -33,14 +33,25 @@ /* See comment in js/public/HeapAPI.h. */ static const uint32_t Relocated = js::gc::Relocated; @@ -75,10 +75,10 @@ /* The location |this| was moved to. */ Cell* newLocation_; -diff --git a/js/src/jsfriendapi.h b/js/src/jsfriendapi.h -index 4b8d18a..70ce0a1 100644 ---- a/js/src/jsfriendapi.h -+++ b/js/src/jsfriendapi.h +Index: firefox-60.9.0/js/src/jsfriendapi.h +=================================================================== +--- firefox-60.9.0.orig/js/src/jsfriendapi.h 2019-09-01 15:09:18.000000000 +0200 ++++ firefox-60.9.0/js/src/jsfriendapi.h 2019-12-09 11:42:31.024301901 +0100 @@ -9,6 +9,7 @@ #include "mozilla/Atomics.h" @@ -87,7 +87,7 @@ #include "mozilla/Maybe.h" #include "mozilla/MemoryReporting.h" #include "mozilla/UniquePtr.h" -@@ -609,8 +610,15 @@ struct String { +@@ -609,8 +610,15 @@ static const uint32_t LATIN1_CHARS_BIT = JS_BIT(6); static const uint32_t EXTERNAL_FLAGS = LINEAR_BIT | NON_ATOM_BIT | JS_BIT(5); static const uint32_t TYPE_FLAGS_MASK = JS_BIT(6) - 1; @@ -103,10 +103,10 @@ union { const JS::Latin1Char* nonInlineCharsLatin1; const char16_t* nonInlineCharsTwoByte; -diff --git a/js/src/vm/StringType.h b/js/src/vm/StringType.h -index cde3427..c3400db 100644 ---- a/js/src/vm/StringType.h -+++ b/js/src/vm/StringType.h +Index: firefox-60.9.0/js/src/vm/StringType.h +=================================================================== +--- firefox-60.9.0.orig/js/src/vm/StringType.h 2019-09-01 15:09:39.000000000 +0200 ++++ firefox-60.9.0/js/src/vm/StringType.h 2019-12-09 11:42:31.028301901 +0100 @@ -7,6 +7,7 @@ #ifndef vm_StringType_h #define vm_StringType_h @@ -115,7 +115,7 @@ #include "mozilla/MemoryReporting.h" #include "mozilla/PodOperations.h" #include "mozilla/Range.h" -@@ -168,8 +169,20 @@ class JSString : public js::gc::Cell { +@@ -168,8 +169,20 @@ struct Data { union { struct { @@ -136,6 +136,89 @@ }; uintptr_t flattenData; /* JSRope (temporary while flattening) */ } u1; --- -2.23.0 - +Index: firefox-60.9.0/js/src/js-config.h.in +=================================================================== +--- firefox-60.9.0.orig/js/src/js-config.h.in 2019-09-01 15:09:18.000000000 +0200 ++++ firefox-60.9.0/js/src/js-config.h.in 2019-12-09 11:43:13.052302975 +0100 +@@ -38,6 +38,13 @@ + /* Define to 1 if SpiderMonkey should include ctypes support. */ + #undef JS_HAS_CTYPES + ++/* Define to 1 if SpiderMonkey should include trace logging support. */ ++#undef JS_TRACE_LOGGING ++ ++/* Define to 1 if SpiderMonkey should include a breakpoint function for ++ * artificial OOMs. */ ++#undef JS_OOM_BREAKPOINT ++ + /* Define to 1 if SpiderMonkey should support the ability to perform + entirely too much GC. */ + #undef JS_GC_ZEAL +@@ -48,12 +55,25 @@ + /* Define to 1 to perform extra assertions and heap poisoning. */ + #undef JS_CRASH_DIAGNOSTICS + ++/* Define to 1 if SpiderMonkey is compiled with support for private values at ++ * odd-numbered memory addresses. */ ++#undef JS_UNALIGNED_PRIVATE_VALUES ++ + /* Define to 1 if SpiderMonkey is in NUNBOX32 mode. */ + #undef JS_NUNBOX32 + + /* Define to 1 if SpiderMonkey is in PUNBOX64 mode. */ + #undef JS_PUNBOX64 + ++/* Define exactly one of these to 1 to indicate JIT code generation mode. */ ++#undef JS_CODEGEN_NONE ++#undef JS_CODEGEN_ARM ++#undef JS_CODEGEN_ARM64 ++#undef JS_CODEGEN_MIPS32 ++#undef JS_CODEGEN_MIPS64 ++#undef JS_CODEGEN_X86 ++#undef JS_CODEGEN_X64 ++ + /* MOZILLA JSAPI version number components */ + #undef MOZJS_MAJOR_VERSION + #undef MOZJS_MINOR_VERSION +Index: firefox-60.9.0/js/src/jsapi.cpp +=================================================================== +--- firefox-60.9.0.orig/js/src/jsapi.cpp 2019-09-01 15:09:18.000000000 +0200 ++++ firefox-60.9.0/js/src/jsapi.cpp 2019-12-09 11:43:13.052302975 +0100 +@@ -115,6 +115,14 @@ + #define JS_ADDRESSOF_VA_LIST(ap) (&(ap)) + #endif + ++// See preprocessor definition of JS_BITS_PER_WORD in jstypes.h; make sure ++// JS_64BIT (used internally) agrees with it ++#ifdef JS_64BIT ++static_assert(JS_BITS_PER_WORD == 64, "values must be in sync"); ++#else ++static_assert(JS_BITS_PER_WORD == 32, "values must be in sync"); ++#endif ++ + JS_PUBLIC_API bool JS::CallArgs::requireAtLeast(JSContext* cx, + const char* fnname, + unsigned required) const { +Index: firefox-60.9.0/js/src/jstypes.h +=================================================================== +--- firefox-60.9.0.orig/js/src/jstypes.h 2019-09-01 15:09:18.000000000 +0200 ++++ firefox-60.9.0/js/src/jstypes.h 2019-12-09 11:43:13.052302975 +0100 +@@ -141,12 +141,17 @@ + #define JS_BITS_PER_BYTE 8 + #define JS_BITS_PER_BYTE_LOG2 3 + +-#if defined(JS_64BIT) ++#if (defined(__SIZEOF_POINTER__) && __SIZEOF_POINTER__ == 8) || \ ++ (defined(UINTPTR_MAX) && UINTPTR_MAX == 0xFFFFFFFFFFFFFFFFu) + #define JS_BITS_PER_WORD 64 + #else + #define JS_BITS_PER_WORD 32 + #endif + ++static_assert(sizeof(void*) == 8 ? JS_BITS_PER_WORD == 64 ++ : JS_BITS_PER_WORD == 32, ++ "preprocessor and compiler must agree"); ++ + /*********************************************************************** + ** MACROS: JS_FUNC_TO_DATA_PTR + ** JS_DATA_TO_FUNC_PTR ++++++ icu_sources_data-Write-command-output-to-our-stderr.patch ++++++ From: Simon McVittie <s...@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 @@ -84,16 +84,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, + 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), + print('''Error running "{}" in directory {}'''.format(' '.join(command), cwd), file=sys.stderr) return False else: - os.unlink(f.name) return True ++++++ icu_sources_data.py-Decouple-from-Mozilla-build-system.patch ++++++ From: Simon McVittie <s...@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 @@ -19,7 +19,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 def find_source_file(dir, filename): ++++++ skip-i586-failing-tests.patch ++++++ Index: firefox-60.9.0/js/src/tests/jstests.list =================================================================== --- firefox-60.9.0.orig/js/src/tests/jstests.list 2019-12-30 14:42:52.280553804 +0100 +++ firefox-60.9.0/js/src/tests/jstests.list 2019-12-30 16:08:20.952684820 +0100 @@ -454,6 +454,16 @@ # Assumes little-endian IEEE representation of floating point numbers fails-if(xulRuntime.XPCOMABI.match(/s390x|ppc64-|ppc-/)) script test262/built-ins/TypedArray/prototype/set/typedarray-arg-set-values-same-buffer-other-type.js +# Doesn't pass on i586, requires SSE2 (i686) +# Upstream assumes everything uses SSE mathematics, but SSE isn't in i586, so we are stuck with i387 and its weird 80-bit floating point registers +# (and the rounding +# is not what these tests expect) +# We can't even work around this with -fexcess-precision=standard, because mozjs is C++. +# Debian has the same issue +fails-if(xulRuntime.XPCOMABI.match(/x86-/)) script test262/language/types/number/S8.5_A2.1.js +fails-if(xulRuntime.XPCOMABI.match(/x86-/)) script test262/language/types/number/S8.5_A2.2.js +fails-if(xulRuntime.XPCOMABI.match(/x86-/)) script test262/built-ins/Number/prototype/toPrecision/return-values.js +fails-if(xulRuntime.XPCOMABI.match(/x86-/)) script non262/Date/timeclip.js + # Fails with system ICU due to different data? skip script non262/Intl/DateTimeFormat/tz-environment-variable.js skip script non262/Intl/NumberFormat/formatToParts.js ++++++ tests-Expect-a-test-to-fail-on-big-endian.patch ++++++ From: Simon McVittie <s...@debian.org> Date: Fri, 28 Sep 2018 09:51:33 +0100 Subject: tests: Expect a test to fail on big-endian Signed-off-by: Simon McVittie <s...@debian.org> Forwarded: no --- js/src/tests/jstests.list | 3 +++ 1 file changed, 3 insertions(+) Index: firefox-60.9.0/js/src/tests/jstests.list =================================================================== --- firefox-60.9.0.orig/js/src/tests/jstests.list 2019-12-10 11:04:22.464247245 +0100 +++ firefox-60.9.0/js/src/tests/jstests.list 2019-12-10 11:15:21.496264080 +0100 @@ -451,6 +451,8 @@ # skip-if(xulRuntime.XPCOMABI.match(/s390x|ppc64-/)) script non262/extensions/clone-errors.js +# Assumes little-endian IEEE representation of floating point numbers +fails-if(xulRuntime.XPCOMABI.match(/s390x|ppc64-|ppc-/)) script test262/built-ins/TypedArray/prototype/set/typedarray-arg-set-values-same-buffer-other-type.js ########################################################### # Tests disabled due to issues in test262 importer script #