From 6c3bc4d1980df372e7898ce079f30bd4f4fe63a8 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sun, 4 Oct 2020 19:34:21 +0000
Subject: js52: 52.9.0

---
 abs/extra/js52/PKGBUILD                            | 106 +++++++++++++--------
 abs/extra/js52/mozjs52-disable-wformat.patch       |  12 +++
 abs/extra/js52/mozjs52-fix-soname.patch            |  34 -------
 .../js52/mozjs52-include-configure-script.patch    |  63 ------------
 4 files changed, 76 insertions(+), 139 deletions(-)
 create mode 100644 abs/extra/js52/mozjs52-disable-wformat.patch
 delete mode 100644 abs/extra/js52/mozjs52-fix-soname.patch
 delete mode 100644 abs/extra/js52/mozjs52-include-configure-script.patch

diff --git a/abs/extra/js52/PKGBUILD b/abs/extra/js52/PKGBUILD
index 6338a13..9f79858 100644
--- a/abs/extra/js52/PKGBUILD
+++ b/abs/extra/js52/PKGBUILD
@@ -1,72 +1,94 @@
-# $Id$
-# Contributor: Ionut Biru <ibiru@archlinux.org>
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
 
 pkgname=js52
-pkgver=52.7.3
-pkgrel=1
-_ffver=${pkgver%%.*}
-pkgdesc="JavaScript interpreter and libraries - Version $_ffver"
+pkgver=52.9.0
+pkgrel=4
+pkgdesc="JavaScript interpreter and libraries - Version 52"
 arch=(x86_64)
 url="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey"
 license=(MPL)
 depends=(gcc-libs readline zlib sh)
-makedepends=(python2 zip autoconf2.13 mercurial)
-_repo=https://hg.mozilla.org/mozilla-unified
-source=("hg+$_repo#tag=FIREFOX_${pkgver//./_}esr_RELEASE"
+makedepends=(python2 zip autoconf2.13)
+_relver=${pkgver}esr
+source=(https://archive.mozilla.org/pub/firefox/releases/$_relver/source/firefox-$_relver.source.tar.xz
         mozjs52-copy-headers.patch
         mozjs52-disable-mozglue.patch
-        mozjs52-fix-soname.patch
-        mozjs52-include-configure-script.patch)
-sha256sums=('SKIP'
+        mozjs52-disable-wformat.patch)
+sha256sums=('c01d09658c53c1b3a496e353a24dad03b26b81d3b1d099abc26a06f81c199dd6'
             'c5b3a88e4d10ef149aba6fc48d431db54ff266323fa22a5d549028fd794423cc'
             '5a84f02521f37de873991dd360a4c4bfdbdd2fb4a218e11be73f9cbbf02050e8'
-            '06389b8e30465bb8e6fab6144dadedffa30595f143a686524da175b5cf5e8a27'
-            'd91a89acd88bfc747a255050757a0c17139bf5c3508c2e1c3c6bb2056786a344')
+            '4c5a1662e36c6a5a11db0263bb264d104ff801789d5b6bc6a6104439457afb90')
+
+# Make sure the duplication between bin and lib is found
+COMPRESSZST+=(--long)
 
 prepare() {
-  cd mozilla-unified
+  cd firefox-$_relver
+  mkdir obj
 
-  # https://anonscm.debian.org/git/pkg-gnome/mozjs52.git/tree/debian/patches
-  patch -Np1 -i ../mozjs52-fix-soname.patch
+  # https://salsa.debian.org/gnome-team/mozjs52/tree/debian/master/debian/patches
   patch -Np1 -i ../mozjs52-copy-headers.patch
   patch -Np1 -i ../mozjs52-disable-mozglue.patch
-  patch -Np1 -i ../mozjs52-include-configure-script.patch
+
+  # New errors in test code as of GCC 9
+  patch -Np1 -i ../mozjs52-disable-wformat.patch
 }
 
 build() {
+  local configure_args=(
+    --prefix=/usr
+    --disable-debug
+    --disable-debug-symbols
+    --disable-jemalloc
+    --disable-strip
+    --enable-gold
+    --enable-optimize="-O2"
+    --enable-pie
+    --enable-posix-nspr-emulation
+    --enable-readline
+    --enable-release
+    --enable-shared-js
+    --enable-tests
+    --with-intl-api
+    --with-system-zlib
+    --without-system-icu
+  ) flags=(
+    -fno-delete-null-pointer-checks
+    -fno-strict-aliasing
+    -fno-tree-vrp
+  )
+
+  cd firefox-$_relver/obj
+
   unset CPPFLAGS
-  CFLAGS+=' -fno-delete-null-pointer-checks -fno-strict-aliasing -fno-tree-vrp -flto=3'
-  CXXFLAGS+=' -fno-delete-null-pointer-checks -fno-strict-aliasing -fno-tree-vrp -flto=3'
-  export CC=gcc CXX=g++ PYTHON=/usr/bin/python2 SHELL=/bin/bash
+  CFLAGS+=" ${flags[*]}"
+  CXXFLAGS+=" ${flags[*]}"
+  export CC=gcc CXX=g++ PYTHON=/usr/bin/python2
 
-  cd mozilla-unified/js/src
-  sh configure \
-    --prefix=/usr \
-    --disable-debug \
-    --disable-debug-symbols \
-    --disable-strip \
-    --enable-gold \
-    --enable-optimize="-O2" \
-    --enable-pie \
-    --enable-posix-nspr-emulation \
-    --enable-readline \
-    --enable-release \
-    --enable-shared-js \
-    --enable-tests \
-    --with-intl-api \
-    --with-system-zlib \
-    --without-system-icu
+  sh ../js/src/configure "${configure_args[@]}"
   make
 }
 
 check() {
-  cd mozilla-unified/js/src
-  python2 tests/jstests.py -d -s -t 300 --no-progress ../../js/src/js/src/shell/js
-  python2 jit-test/jit_test.py -s -t 300 --no-progress ../../js/src/js/src/shell/js basic
+  local jstests_extra_args=(
+    --format=none
+    --exclude-random
+  ) jittest_extra_args=(
+    --format=none
+    --timeout 300
+  ) jittest_test_args=(
+    basic
+  )
+
+  cd firefox-$_relver/obj
+  make -C js/src check-jstests check-jit-test \
+    JSTESTS_EXTRA_ARGS="${jstests_extra_args[*]}" \
+    JITTEST_EXTRA_ARGS="${jittest_extra_args[*]}" \
+    JITTEST_TEST_ARGS="${jittest_test_args[*]}"
 }
 
 package() {
-  cd mozilla-unified/js/src
+  cd firefox-$_relver/obj
   make DESTDIR="$pkgdir" install
   rm "$pkgdir"/usr/lib/*.ajs
   find "$pkgdir"/usr/{lib/pkgconfig,include} -type f -exec chmod -c a-x {} +
diff --git a/abs/extra/js52/mozjs52-disable-wformat.patch b/abs/extra/js52/mozjs52-disable-wformat.patch
new file mode 100644
index 0000000..71e9ac3
--- /dev/null
+++ b/abs/extra/js52/mozjs52-disable-wformat.patch
@@ -0,0 +1,12 @@
+diff -u -r firefox-52.9.0esr/js/src/jsapi-tests/moz.build firefox-52.9.0esr-noerror/js/src/jsapi-tests/moz.build
+--- firefox-52.9.0esr/js/src/jsapi-tests/moz.build	2017-04-11 02:13:16.000000000 +0000
++++ firefox-52.9.0esr-noerror/js/src/jsapi-tests/moz.build	2019-06-20 20:10:31.092230735 +0000
+@@ -147,7 +147,7 @@
+ OS_LIBS += CONFIG['MOZ_ZLIB_LIBS']
+ 
+ if CONFIG['GNU_CXX']:
+-    CXXFLAGS += ['-Wno-shadow', '-Werror=format']
++    CXXFLAGS += ['-Wno-shadow']
+ 
+ # This is intended as a temporary workaround to enable VS2015.
+ if CONFIG['_MSC_VER']:
diff --git a/abs/extra/js52/mozjs52-fix-soname.patch b/abs/extra/js52/mozjs52-fix-soname.patch
deleted file mode 100644
index a91107c..0000000
--- a/abs/extra/js52/mozjs52-fix-soname.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From: Laszlo Boszormenyi (GCS) <gcs@debian.org>
-Date: Fri, 02 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 | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-Index: mozjs52-52.2.1~artful1/config/rules.mk
-===================================================================
---- mozjs52-52.2.1~artful1.orig/config/rules.mk
-+++ mozjs52-52.2.1~artful1/config/rules.mk
-@@ -418,7 +418,7 @@ endif # AIX
- #
- # Linux: add -Bsymbolic flag for components
- #
--ifeq ($(OS_ARCH),Linux)
-+#ifeq ($(OS_ARCH),Linux)
- ifdef IS_COMPONENT
- EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic
- endif
-@@ -426,7 +426,8 @@ ifdef LD_VERSION_SCRIPT
- EXTRA_DSO_LDOPTS += -Wl,--version-script,$(LD_VERSION_SCRIPT)
- EXTRA_DEPS += $(LD_VERSION_SCRIPT)
- endif
--endif
-+#endif
-+EXTRA_DSO_LDOPTS += -Wl,-soname,lib$(JS_LIBRARY_NAME).so.0
- 
- ifdef SYMBOLS_FILE
- ifeq ($(OS_TARGET),WINNT)
diff --git a/abs/extra/js52/mozjs52-include-configure-script.patch b/abs/extra/js52/mozjs52-include-configure-script.patch
deleted file mode 100644
index 523e657..0000000
--- a/abs/extra/js52/mozjs52-include-configure-script.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 4a06a1a6a71293decb83aee7adb74bc709493106 Mon Sep 17 00:00:00 2001
-From: Philip Chimento <philip.chimento@gmail.com>
-Date: Wed, 5 Jul 2017 22:57:09 -0700
-Subject: [PATCH] build: Include configure script, be nicer about options
-
-A configure script is not included in the SpiderMonkey tarball by
-default. Also, we have to account for JHbuild passing extra unknown
-options like --disable-Werror.
-
-https://bugzilla.mozilla.org/show_bug.cgi?id=1379540
----
- js/src/configure                               | 9 +++++++++
- python/mozbuild/mozbuild/configure/__init__.py | 2 +-
- python/mozbuild/mozbuild/configure/options.py  | 6 +++++-
- 3 files changed, 15 insertions(+), 2 deletions(-)
- create mode 100755 js/src/configure
-
-diff --git a/js/src/configure b/js/src/configure
-new file mode 100755
-index 00000000..f1ef8c49
---- /dev/null
-+++ b/js/src/configure
-@@ -0,0 +1,9 @@
-+#!/bin/sh
-+
-+SRCDIR=$(dirname $0)
-+TOPSRCDIR="$SRCDIR"/../..
-+export OLD_CONFIGURE="$SRCDIR"/old-configure
-+
-+set -- "$@" --enable-project=js
-+
-+which python2.7 > /dev/null && exec python2.7 "$TOPSRCDIR/configure.py" "$@" || exec python "$TOPSRCDIR/configure.py" "$@"
-diff --git a/python/mozbuild/mozbuild/configure/__init__.py b/python/mozbuild/mozbuild/configure/__init__.py
-index 0fe640ca..09b460d3 100644
---- a/python/mozbuild/mozbuild/configure/__init__.py
-+++ b/python/mozbuild/mozbuild/configure/__init__.py
-@@ -356,7 +356,7 @@ def run(self, path=None):
-         # All options should have been removed (handled) by now.
-         for arg in self._helper:
-             without_value = arg.split('=', 1)[0]
--            raise InvalidOptionError('Unknown option: %s' % without_value)
-+            print('Ignoring', without_value, ': Unknown option')
- 
-         # Run the execution queue
-         for func, args in self._execution_queue:
-diff --git a/python/mozbuild/mozbuild/configure/options.py b/python/mozbuild/mozbuild/configure/options.py
-index 4310c862..15bfe425 100644
---- a/python/mozbuild/mozbuild/configure/options.py
-+++ b/python/mozbuild/mozbuild/configure/options.py
-@@ -402,7 +402,11 @@ def __init__(self, environ=os.environ, argv=sys.argv):
- 
-     def add(self, arg, origin='command-line', args=None):
-         assert origin != 'default'
--        prefix, name, values = Option.split_option(arg)
-+        try:
-+            prefix, name, values = Option.split_option(arg)
-+        except InvalidOptionError as e:
-+            print('Ignoring', arg, ':', e)
-+            return
-         if args is None:
-             args = self._extra_args
-         if args is self._extra_args and name in self._extra_args:
-
-- 
cgit v0.12

