extra/js91 to 91.13.0-2

This commit is contained in:
Kevin Mihelich 2024-04-08 12:51:25 +00:00
parent 9ae39f59c7
commit 447e1ef21f
4 changed files with 263 additions and 62 deletions

34
extra/js91/.SRCINFO Normal file
View file

@ -0,0 +1,34 @@
pkgbase = js91
pkgdesc = JavaScript interpreter and libraries - Version 91
pkgver = 91.13.0
pkgrel = 2
url = https://spidermonkey.dev/
arch = x86_64
license = MPL-2.0
checkdepends = git
checkdepends = mercurial
makedepends = autoconf2.13
makedepends = clang
makedepends = lld
makedepends = llvm
makedepends = python
makedepends = python-setuptools
makedepends = rustup
makedepends = zip
depends = gcc-libs
depends = readline
depends = sh
depends = zlib
options = !lto
source = https://archive.mozilla.org/pub/firefox/releases/91.13.0esr/source/firefox-91.13.0esr.source.tar.xz
source = https://archive.mozilla.org/pub/firefox/releases/91.13.0esr/source/firefox-91.13.0esr.source.tar.xz.asc
source = 0001-Bug-1769631-Remove-U-from-mode-parameters-for-variou.patch
validpgpkeys = 14F26682D0916CDD81E37B6D61B7B526D98F0353
sha256sums = 53be2bcde0b5ee3ec106bd8ba06b8ae95e7d489c484e881dfbe5360e4c920762
sha256sums = SKIP
sha256sums = 1b6fcec05714c0fbc52549059d570dddd79302ca787dec9983b046d54fa7a6ff
b2sums = 75d0daa512b3a2d41974a0169778be9ef19a100de2bd382add9831860ca93976585a41e760b6a7ec753268fb78f9f61049780fa7961834248bc8157cfdcc2827
b2sums = SKIP
b2sums = 216206c7f0356267f4f29880b8b8e8e388f9dd483a56cd427de57756d64ef26ea6d6b36e33ca96dbc54c45bf78bbf2b9a666aa8b2029fa28d07dc41342101158
pkgname = js91

View file

@ -0,0 +1,130 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: ahochheiden <ahochheiden@mozilla.com>
Date: Thu, 2 Jun 2022 06:27:44 +0000
Subject: [PATCH] Bug 1769631 - Remove 'U' from 'mode' parameters for various
'open' calls to ensure Python3.11 compatibility
r=firefox-build-system-reviewers,glandium a=RyanVM
The 'U' flag represents "universal newline". It has been deprecated
since Python3.3. Since then "universal newline" is the default when a
file is opened in text mode (not bytes). In Python3.11 using the 'U'
flag throws errors. There should be no harm in removing 'U' from 'open'
everywhere it is used, and doing allows the use of Python3.11.
For more reading see: https://docs.python.org/3.11/whatsnew/3.11.html#changes-in-the-python-api
Differential Revision: https://phabricator.services.mozilla.com/D147721
---
dom/base/usecounters.py | 2 +-
python/mozbuild/mozbuild/action/process_define_files.py | 2 +-
python/mozbuild/mozbuild/backend/base.py | 2 +-
python/mozbuild/mozbuild/preprocessor.py | 6 +++---
python/mozbuild/mozbuild/util.py | 2 +-
python/mozbuild/mozpack/files.py | 4 ++--
6 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/dom/base/usecounters.py b/dom/base/usecounters.py
index 780e3b32b213..7e2c7148ece5 100644
--- a/dom/base/usecounters.py
+++ b/dom/base/usecounters.py
@@ -8,7 +8,7 @@ import re
def read_conf(conf_filename):
# Can't read/write from a single StringIO, so make a new one for reading.
- stream = open(conf_filename, "rU")
+ stream = open(conf_filename, "r")
def parse_counters(stream):
for line_num, line in enumerate(stream):
diff --git a/python/mozbuild/mozbuild/action/process_define_files.py b/python/mozbuild/mozbuild/action/process_define_files.py
index f1d401ac2600..aca59d0f0517 100644
--- a/python/mozbuild/mozbuild/action/process_define_files.py
+++ b/python/mozbuild/mozbuild/action/process_define_files.py
@@ -36,7 +36,7 @@ def process_define_file(output, input):
) and not config.substs.get("JS_STANDALONE"):
config = PartialConfigEnvironment(mozpath.join(topobjdir, "js", "src"))
- with open(path, "rU") as input:
+ with open(path, "r") as input:
r = re.compile(
"^\s*#\s*(?P<cmd>[a-z]+)(?:\s+(?P<name>\S+)(?:\s+(?P<value>\S+))?)?", re.U
)
diff --git a/python/mozbuild/mozbuild/backend/base.py b/python/mozbuild/mozbuild/backend/base.py
index 7bc1986d863b..b64a70946863 100644
--- a/python/mozbuild/mozbuild/backend/base.py
+++ b/python/mozbuild/mozbuild/backend/base.py
@@ -272,7 +272,7 @@ class BuildBackend(LoggingMixin):
return status
@contextmanager
- def _write_file(self, path=None, fh=None, readmode="rU"):
+ def _write_file(self, path=None, fh=None, readmode="r"):
"""Context manager to write a file.
This is a glorified wrapper around FileAvoidWrite with integration to
diff --git a/python/mozbuild/mozbuild/preprocessor.py b/python/mozbuild/mozbuild/preprocessor.py
index f7820b9c9147..857f1a6c9bfd 100644
--- a/python/mozbuild/mozbuild/preprocessor.py
+++ b/python/mozbuild/mozbuild/preprocessor.py
@@ -531,7 +531,7 @@ class Preprocessor:
if args:
for f in args:
- with io.open(f, "rU", encoding="utf-8") as input:
+ with io.open(f, "r", encoding="utf-8") as input:
self.processFile(input=input, output=out)
if depfile:
mk = Makefile()
@@ -860,7 +860,7 @@ class Preprocessor:
args = self.applyFilters(args)
if not os.path.isabs(args):
args = os.path.join(self.curdir, args)
- args = io.open(args, "rU", encoding="utf-8")
+ args = io.open(args, "r", encoding="utf-8")
except Preprocessor.Error:
raise
except Exception:
@@ -914,7 +914,7 @@ class Preprocessor:
def preprocess(includes=[sys.stdin], defines={}, output=sys.stdout, marker="#"):
pp = Preprocessor(defines=defines, marker=marker)
for f in includes:
- with io.open(f, "rU", encoding="utf-8") as input:
+ with io.open(f, "r", encoding="utf-8") as input:
pp.processFile(input=input, output=output)
return pp.includes
diff --git a/python/mozbuild/mozbuild/util.py b/python/mozbuild/mozbuild/util.py
index 071daecc397b..81de4730dac9 100644
--- a/python/mozbuild/mozbuild/util.py
+++ b/python/mozbuild/mozbuild/util.py
@@ -225,7 +225,7 @@ class FileAvoidWrite(BytesIO):
still occur, as well as diff capture if requested.
"""
- def __init__(self, filename, capture_diff=False, dry_run=False, readmode="rU"):
+ def __init__(self, filename, capture_diff=False, dry_run=False, readmode="r"):
BytesIO.__init__(self)
self.name = filename
assert type(capture_diff) == bool
diff --git a/python/mozbuild/mozpack/files.py b/python/mozbuild/mozpack/files.py
index 8150e72d6fa2..001c497b2796 100644
--- a/python/mozbuild/mozpack/files.py
+++ b/python/mozbuild/mozpack/files.py
@@ -574,7 +574,7 @@ class PreprocessedFile(BaseFile):
pp = Preprocessor(defines=self.defines, marker=self.marker)
pp.setSilenceDirectiveWarnings(self.silence_missing_directive_warnings)
- with _open(self.path, "rU") as input:
+ with _open(self.path, "r") as input:
with _open(os.devnull, "w") as output:
pp.processFile(input=input, output=output)
@@ -631,7 +631,7 @@ class PreprocessedFile(BaseFile):
pp = Preprocessor(defines=self.defines, marker=self.marker)
pp.setSilenceDirectiveWarnings(self.silence_missing_directive_warnings)
- with _open(self.path, "rU") as input:
+ with _open(self.path, "r") as input:
pp.processFile(input=input, output=dest, depfile=deps_out)
dest.close()

View file

@ -5,20 +5,48 @@
pkgname=js91 pkgname=js91
pkgver=91.13.0 pkgver=91.13.0
pkgrel=1 pkgrel=2
pkgdesc="JavaScript interpreter and libraries - Version 91" pkgdesc="JavaScript interpreter and libraries - Version 91"
arch=(x86_64)
url="https://spidermonkey.dev/" url="https://spidermonkey.dev/"
license=(MPL) arch=(x86_64)
depends=(gcc-libs readline zlib sh) license=(MPL-2.0)
makedepends=(zip autoconf2.13 python-setuptools python-psutil rustup llvm clang lld) depends=(
checkdepends=(mercurial git) gcc-libs
options=(!lto debug) readline
sh
zlib
)
makedepends=(
autoconf2.13
clang
lld
llvm
python
python-setuptools
rustup
zip
)
checkdepends=(
git
mercurial
)
options=(!lto)
_relver=${pkgver}esr _relver=${pkgver}esr
source=(https://archive.mozilla.org/pub/firefox/releases/$_relver/source/firefox-$_relver.source.tar.xz{,.asc}) source=(
https://archive.mozilla.org/pub/firefox/releases/$_relver/source/firefox-$_relver.source.tar.xz{,.asc}
0001-Bug-1769631-Remove-U-from-mode-parameters-for-variou.patch
)
validpgpkeys=(
# Mozilla Software Releases <release@mozilla.com>
# https://blog.mozilla.org/security/2023/05/11/updated-gpg-key-for-signing-firefox-releases/
14F26682D0916CDD81E37B6D61B7B526D98F0353
)
sha256sums=('53be2bcde0b5ee3ec106bd8ba06b8ae95e7d489c484e881dfbe5360e4c920762' sha256sums=('53be2bcde0b5ee3ec106bd8ba06b8ae95e7d489c484e881dfbe5360e4c920762'
'SKIP') 'SKIP'
validpgpkeys=('14F26682D0916CDD81E37B6D61B7B526D98F0353') # Mozilla Software Releases <release@mozilla.com> '1b6fcec05714c0fbc52549059d570dddd79302ca787dec9983b046d54fa7a6ff')
b2sums=('75d0daa512b3a2d41974a0169778be9ef19a100de2bd382add9831860ca93976585a41e760b6a7ec753268fb78f9f61049780fa7961834248bc8157cfdcc2827'
'SKIP'
'216206c7f0356267f4f29880b8b8e8e388f9dd483a56cd427de57756d64ef26ea6d6b36e33ca96dbc54c45bf78bbf2b9a666aa8b2029fa28d07dc41342101158')
# Make sure the duplication between bin and lib is found # Make sure the duplication between bin and lib is found
COMPRESSZST+=(--long) COMPRESSZST+=(--long)
@ -31,6 +59,9 @@ prepare() {
mkdir mozbuild mkdir mozbuild
cd firefox-$pkgver cd firefox-$pkgver
# Python 3.11
patch -Np1 -i ../0001-Bug-1769631-Remove-U-from-mode-parameters-for-variou.patch
cat >../mozconfig <<END cat >../mozconfig <<END
ac_add_options --enable-application=js ac_add_options --enable-application=js
mk_add_options MOZ_OBJDIR=${PWD@Q}/obj mk_add_options MOZ_OBJDIR=${PWD@Q}/obj
@ -44,8 +75,8 @@ ac_add_options --disable-rust-simd
ac_add_options --enable-linker=lld ac_add_options --enable-linker=lld
ac_add_options --disable-bootstrap ac_add_options --disable-bootstrap
ac_add_options --disable-debug ac_add_options --disable-debug
ac_add_options --disable-debug-symbols
ac_add_options --disable-jemalloc ac_add_options --disable-jemalloc
ac_add_options --disable-new-pass-manager
ac_add_options --disable-strip ac_add_options --disable-strip
# System libraries # System libraries
@ -63,9 +94,14 @@ END
build() { build() {
cd firefox-$pkgver cd firefox-$pkgver
export MOZ_NOSPAM=1
export MOZBUILD_STATE_PATH="$srcdir/mozbuild"
export MACH_USE_SYSTEM_PYTHON=1 export MACH_USE_SYSTEM_PYTHON=1
export MOZBUILD_STATE_PATH="$srcdir/mozbuild"
export MOZ_BUILD_DATE="$(date -u${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH} +%Y%m%d%H%M%S)"
export MOZ_NOSPAM=1
# malloc_usable_size is used in various parts of the codebase
CFLAGS="${CFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}"
CXXFLAGS="${CXXFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}"
# Do 3-tier PGO # Do 3-tier PGO
echo "Building instrumented JS..." echo "Building instrumented JS..."
@ -131,4 +167,4 @@ package() {
find "$pkgdir"/usr/{lib/pkgconfig,include} -type f -exec chmod -c a-x {} + find "$pkgdir"/usr/{lib/pkgconfig,include} -type f -exec chmod -c a-x {} +
} }
# vim:set sw=2 et: # vim:set sw=2 sts=-1 et:

View file

@ -12,52 +12,53 @@ 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
=/ReQ GnlSHYmdIS4=
=Ylsd
-----END PGP PUBLIC KEY BLOCK----- -----END PGP PUBLIC KEY BLOCK-----