From: paper42 <paper42@users.noreply.github.com>
To: ml@inbox.vuxu.org
Subject: Re: [PR PATCH] [Updated] [NOMERGE] nodejs: update to 18.12.1.
Date: Sun, 25 Dec 2022 00:44:19 +0100 [thread overview]
Message-ID: <20221224234419.1zZRUferBE1Fj9wftNXrwMyvntW1Y6tln_QwuUdcJp0@z> (raw)
In-Reply-To: <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-41239@inbox.vuxu.org>
[-- Attachment #1: Type: text/plain, Size: 1433 bytes --]
There is an updated pull request by paper42 against master on the void-packages repository
https://github.com/paper42/void-packages nodejs-18
https://github.com/void-linux/void-packages/pull/41239
[NOMERGE] nodejs: update to 18.12.1.
<!-- Uncomment relevant sections and delete options which are not applicable -->
#### Testing the changes
- I tested the changes in this PR: **briefly**
#### Blockers
- [ ] element-desktop - nodejs 18 not supported upstream
- [ ] vscode - nodejs 18 not supported upstream
- [ ] ... maybe more, rebuilds are still running
<!--
#### New package
- This new package conforms to the [package requirements](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements): **YES**|**NO**
-->
<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->
<!--
#### Local build testing
- I built this PR locally for my native architecture, (ARCH-LIBC)
- I built this PR locally for these architectures (if supported. mark crossbuilds):
- aarch64-musl
- armv7l
- armv6l-musl
-->
A patch file from https://github.com/void-linux/void-packages/pull/41239.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-nodejs-18-41239.patch --]
[-- Type: text/x-diff, Size: 16757 bytes --]
From dfd0ce9054b70b370cc24b3710b4c0aba672f616 Mon Sep 17 00:00:00 2001
From: Michal Vasilek <michal@vasilek.cz>
Date: Thu, 22 Dec 2022 10:43:50 +0100
Subject: [PATCH 1/3] nodejs: update to 18.12.1.
---
...s-v8-src-trap-handler-trap-handler.h.patch | 31 --------
srcpkgs/nodejs/patches/python3.11.patch | 74 +++++++++++++++++++
srcpkgs/nodejs/template | 4 +-
3 files changed, 76 insertions(+), 33 deletions(-)
delete mode 100644 srcpkgs/nodejs/patches/999-deps-v8-src-trap-handler-trap-handler.h.patch
create mode 100644 srcpkgs/nodejs/patches/python3.11.patch
diff --git a/srcpkgs/nodejs/patches/999-deps-v8-src-trap-handler-trap-handler.h.patch b/srcpkgs/nodejs/patches/999-deps-v8-src-trap-handler-trap-handler.h.patch
deleted file mode 100644
index 56529af97223..000000000000
--- a/srcpkgs/nodejs/patches/999-deps-v8-src-trap-handler-trap-handler.h.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-https://github.com/nxhack/openwrt-node-packages/blob/master/node/patches/v16.x/999-deps-v8-src-trap-handler-trap-handler.h.patch
-
---- a/deps/v8/src/trap-handler/trap-handler.h
-+++ b/deps/v8/src/trap-handler/trap-handler.h
-@@ -17,19 +17,16 @@ namespace v8 {
- namespace internal {
- namespace trap_handler {
-
--// X64 on Linux, Windows, MacOS, FreeBSD.
--#if V8_HOST_ARCH_X64 && V8_TARGET_ARCH_X64 && \
-- ((V8_OS_LINUX && !V8_OS_ANDROID) || V8_OS_WIN || V8_OS_MACOSX || \
-- V8_OS_FREEBSD)
-+#if V8_TARGET_ARCH_X64 && V8_OS_LINUX && !V8_OS_ANDROID
- #define V8_TRAP_HANDLER_SUPPORTED true
--// Arm64 (non-simulator) on Mac.
--#elif V8_TARGET_ARCH_ARM64 && V8_HOST_ARCH_ARM64 && V8_OS_MACOSX
-+#elif V8_TARGET_ARCH_X64 && V8_OS_WIN
- #define V8_TRAP_HANDLER_SUPPORTED true
--// Arm64 simulator on x64 on Linux or Mac.
--#elif V8_TARGET_ARCH_ARM64 && V8_HOST_ARCH_X64 && (V8_OS_LINUX || V8_OS_MACOSX)
--#define V8_TRAP_HANDLER_VIA_SIMULATOR
-+#elif V8_TARGET_ARCH_X64 && V8_OS_MACOSX
-+#define V8_TRAP_HANDLER_SUPPORTED true
-+#elif V8_TARGET_ARCH_X64 && V8_OS_FREEBSD
-+#define V8_TRAP_HANDLER_SUPPORTED true
-+#elif V8_HOST_ARCH_ARM64 && V8_TARGET_ARCH_ARM64 && V8_OS_MACOSX
- #define V8_TRAP_HANDLER_SUPPORTED true
--// Everything else is unsupported.
- #else
- #define V8_TRAP_HANDLER_SUPPORTED false
- #endif
diff --git a/srcpkgs/nodejs/patches/python3.11.patch b/srcpkgs/nodejs/patches/python3.11.patch
new file mode 100644
index 000000000000..7b9dbcb99584
--- /dev/null
+++ b/srcpkgs/nodejs/patches/python3.11.patch
@@ -0,0 +1,74 @@
+From cf748ad2b7f760e2df1bc8a811f887161b892534 Mon Sep 17 00:00:00 2001
+From: Luigi Pinca <luigipinca@gmail.com>
+Date: Wed, 26 Oct 2022 15:01:59 +0200
+Subject: [PATCH] build: support Python 3.11
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+PR-URL: https://github.com/nodejs/node/pull/45191
+Reviewed-By: Rich Trott <rtrott@gmail.com>
+Reviewed-By: Moshe Atlow <moshe@atlow.co.il>
+Reviewed-By: Richard Lau <rlau@redhat.com>
+Reviewed-By: Christian Clauss <cclauss@me.com>
+Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
+Reviewed-By: James M Snell <jasnell@gmail.com>
+Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
+Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
+---
+ BUILDING.md | 6 +++---
+ configure | 3 ++-
+ 2 files changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/BUILDING.md b/BUILDING.md
+index 0dd954880131..e66aa314d329 100644
+--- a/BUILDING.md
++++ b/BUILDING.md
+@@ -225,7 +225,7 @@ The Node.js project supports Python >= 3 for building and testing.
+
+ * `gcc` and `g++` >= 8.3 or newer
+ * GNU Make 3.81 or newer
+-* Python 3.6, 3.7, 3.8, 3.9, or 3.10 (see note above)
++* Python >=3.6 <=3.11 (see note above)
+ * For test coverage, your Python installation must include pip.
+
+ Installation via Linux package manager can be achieved with:
+@@ -241,7 +241,7 @@ FreeBSD and OpenBSD users may also need to install `libexecinfo`.
+ #### macOS prerequisites
+
+ * Xcode Command Line Tools >= 11 for macOS
+-* Python 3.6, 3.7, 3.8, 3.9, or 3.10 (see note above)
++* Python >=3.6 <=3.11 (see note above)
+ * For test coverage, your Python installation must include pip.
+
+ macOS users can install the `Xcode Command Line Tools` by running
+@@ -565,7 +565,7 @@ to run it again before invoking `make -j4`.
+
+ ##### Option 1: Manual install
+
+-* [Python 3.10](https://www.microsoft.com/en-us/p/python-310/9pjpw5ldxlz5)
++* [Python 3.11](https://apps.microsoft.com/store/detail/python-311/9NRWMJP3717K)
+ * The "Desktop development with C++" workload from
+ [Visual Studio 2019](https://visualstudio.microsoft.com/vs/older-downloads/#visual-studio-2019-and-other-products) or
+ the "C++ build tools" workload from the
+diff --git a/configure b/configure
+index 6ef2da2e631e..fefb313c9cd1 100755
+--- a/configure
++++ b/configure
+@@ -4,6 +4,7 @@
+ # Note that the mix of single and double quotes is intentional,
+ # as is the fact that the ] goes on a new line.
+ _=[ 'exec' '/bin/sh' '-c' '''
++command -v python3.11 >/dev/null && exec python3.11 "$0" "$@"
+ command -v python3.10 >/dev/null && exec python3.10 "$0" "$@"
+ command -v python3.9 >/dev/null && exec python3.9 "$0" "$@"
+ command -v python3.8 >/dev/null && exec python3.8 "$0" "$@"
+@@ -22,7 +23,7 @@ except ImportError:
+ from distutils.spawn import find_executable as which
+
+ print('Node.js configure: Found Python {}.{}.{}...'.format(*sys.version_info))
+-acceptable_pythons = ((3, 10), (3, 9), (3, 8), (3, 7), (3, 6))
++acceptable_pythons = ((3, 11), (3, 10), (3, 9), (3, 8), (3, 7), (3, 6))
+ if sys.version_info[:2] in acceptable_pythons:
+ import configure
+ else:
diff --git a/srcpkgs/nodejs/template b/srcpkgs/nodejs/template
index 0fee0a8ec725..43d70f938ed3 100644
--- a/srcpkgs/nodejs/template
+++ b/srcpkgs/nodejs/template
@@ -1,6 +1,6 @@
# Template file for 'nodejs'
pkgname=nodejs
-version=16.19.0
+version=18.12.1
revision=1
# Need these for host v8 for torque, see https://github.com/nodejs/node/pull/21079
hostmakedepends="which pkg-config python3 libatomic-devel zlib-devel
@@ -15,7 +15,7 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
license="MIT"
homepage="https://nodejs.org/"
distfiles="https://nodejs.org/dist/v${version}/node-v${version}.tar.gz"
-checksum=8b8a2939fa5f654ff61cae29b12118c24109273458ecbe6162ad8a8858309e0d
+checksum=ba8174dda00d5b90943f37c6a180a1d37c861d91e04a4cb38dc1c0c74981c186
python_version=3
build_options="ssl libuv icu nghttp2 cares"
From 9c980e92d72019361881e00f0a06dfd4273a7ba6 Mon Sep 17 00:00:00 2001
From: Zapeth <steami@live.at>
Date: Thu, 22 Dec 2022 17:00:45 +0100
Subject: [PATCH 2/3] firefox-esr: fix build with Python 3.11
---
.../patches/fix-iomode-python3.11.patch | 107 ++++++++++++++++++
.../firefox-esr/patches/ply-python3.11.patch | 85 ++++++++++++++
2 files changed, 192 insertions(+)
create mode 100644 srcpkgs/firefox-esr/patches/fix-iomode-python3.11.patch
create mode 100644 srcpkgs/firefox-esr/patches/ply-python3.11.patch
diff --git a/srcpkgs/firefox-esr/patches/fix-iomode-python3.11.patch b/srcpkgs/firefox-esr/patches/fix-iomode-python3.11.patch
new file mode 100644
index 000000000000..3c13bc656d54
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/fix-iomode-python3.11.patch
@@ -0,0 +1,107 @@
+Support for 'U' mode was removed in python 3.11, see https://bugs.python.org/issue37330
+
+diff --git a/dom/base/usecounters.py b/dom/base/usecounters.py
+index 780e3b3..7e2c714 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 f1d401a..aca59d0 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 7bc1986..b64a709 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 f7820b9..857f1a6 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 b09f164..4f1e0cd 100644
+--- a/python/mozbuild/mozbuild/util.py
++++ b/python/mozbuild/mozbuild/util.py
+@@ -236,7 +236,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 1d8a1ed..a295a67 100644
+--- a/python/mozbuild/mozpack/files.py
++++ b/python/mozbuild/mozpack/files.py
+@@ -554,7 +554,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)
+
+@@ -611,7 +611,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()
diff --git a/srcpkgs/firefox-esr/patches/ply-python3.11.patch b/srcpkgs/firefox-esr/patches/ply-python3.11.patch
new file mode 100644
index 000000000000..8d1415a4b369
--- /dev/null
+++ b/srcpkgs/firefox-esr/patches/ply-python3.11.patch
@@ -0,0 +1,85 @@
+The Ply lexer, which doesn't seem too active a project, wraps regular
+expressions from grammar definitions in its own regular expressions that name
+groups. This breaks re.compile in Python >= 3.11 when the original expressions
+contain global flags, because the compiler requires that global flags appear at
+the start of the expression instead of inside the named group.
+
+This patch wraps re.compile to scan the expression for any global flags and,
+when found, moves them to the start of the expression.
+
+--- a/third_party/python/ply/ply/lex.py
++++ b/third_party/python/ply/ply/lex.py
+@@ -49,6 +49,37 @@
+ # Python 3.0
+ StringTypes = (str, bytes)
+
++
++def _re_compile(expression, *args, **kwargs):
++ '''
++ Rearrange global flags in the regular expression to appear at the
++ beginning, avoiding deprecation warnings on Python < 3.11 and hard
++ errors on Python >= 3.11.
++ '''
++ flags = set()
++ remainder = ''
++
++ pattern = re.compile(r'\(\?([aiLmsux]+)\)')
++ while m := pattern.search(expression):
++ # Location of the global flag spec
++ l, h = m.span(0)
++ # Accumulate global flags from this spec
++ flags.update(m.group(1))
++ # Capture all text leading up to the match
++ remainder += expression[:l]
++ # Trim to the end fo the flag spec
++ expression = expression[h:]
++
++ # Any remaining expression contains no flags
++ remainder += expression
++
++ # If there are flags, they belong at the beginning
++ if flags:
++ remainder = f'(?{"".join(sorted(flags))})' + remainder
++
++ return re.compile(remainder, *args, **kwargs)
++
++
+ # This regular expression is used to match valid token names
+ _is_identifier = re.compile(r'^[a-zA-Z0-9_]+$')
+
+@@ -230,7 +261,7 @@
+ titem = []
+ txtitem = []
+ for pat, func_name in lre:
+- titem.append((re.compile(pat, lextab._lexreflags), _names_to_funcs(func_name, fdict)))
++ titem.append((_re_compile(pat, lextab._lexreflags), _names_to_funcs(func_name, fdict)))
+
+ self.lexstatere[statename] = titem
+ self.lexstateretext[statename] = txtitem
+@@ -495,7 +526,7 @@
+ return []
+ regex = '|'.join(relist)
+ try:
+- lexre = re.compile(regex, reflags)
++ lexre = _re_compile(regex, reflags)
+
+ # Build the index to function map for the matching engine
+ lexindexfunc = [None] * (max(lexre.groupindex.values()) + 1)
+@@ -758,7 +789,7 @@
+ continue
+
+ try:
+- c = re.compile('(?P<%s>%s)' % (fname, _get_regex(f)), self.reflags)
++ c = _re_compile('(?P<%s>%s)' % (fname, _get_regex(f)), self.reflags)
+ if c.match(''):
+ self.log.error("%s:%d: Regular expression for rule '%s' matches empty string", file, line, f.__name__)
+ self.error = True
+@@ -782,7 +813,7 @@
+ continue
+
+ try:
+- c = re.compile('(?P<%s>%s)' % (name, r), self.reflags)
++ c = _re_compile('(?P<%s>%s)' % (name, r), self.reflags)
+ if (c.match('')):
+ self.log.error("Regular expression for rule '%s' matches empty string", name)
+ self.error = True
From 81ef7655866c1f9fdfeb6eae474e5a9ea083281a Mon Sep 17 00:00:00 2001
From: Michal Vasilek <michal@vasilek.cz>
Date: Sun, 25 Dec 2022 00:39:34 +0100
Subject: [PATCH 3/3] vscode: fix build with nodejs 18
---
srcpkgs/vscode/template | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/srcpkgs/vscode/template b/srcpkgs/vscode/template
index 0baa97da3d23..5d4d4fd2b2c4 100644
--- a/srcpkgs/vscode/template
+++ b/srcpkgs/vscode/template
@@ -61,7 +61,11 @@ do_build() {
--target=$_electronver \
--tarball=/usr/include/electron${_electronver%%.*}/node_headers.tar.gz
- yarn install --frozen-lockfile --ignore-engines --arch=x64
+ # ignore nodejs version checks, we can not pass it as an argument to
+ # yarn install because it doesn't inherit properly
+ echo "ignore-engines true" >> .yarnrc
+
+ yarn install --frozen-lockfile --arch=x64
export CFLAGS="$CFLAGS -I/usr/include/node"
yarn run gulp vscode-linux-x64-min
next prev parent reply other threads:[~2022-12-24 23:44 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-22 16:29 [PR PATCH] " paper42
2022-12-22 16:44 ` [PR PATCH] [Updated] " paper42
2022-12-24 23:44 ` paper42 [this message]
2023-03-02 20:45 ` paper42
2023-03-06 22:46 ` dkwo
2023-03-23 10:13 ` mhmdanas
2023-06-02 20:06 ` [PR PATCH] [Updated] " paper42
2023-06-03 19:35 ` nodejs: update to 18.16.0 paper42
2023-06-03 19:47 ` paper42
2023-06-03 19:47 ` [PR PATCH] [Closed]: " paper42
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221224234419.1zZRUferBE1Fj9wftNXrwMyvntW1Y6tln_QwuUdcJp0@z \
--to=paper42@users.noreply.github.com \
--cc=ml@inbox.vuxu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).