diff mbox series

[20/20] nodejs: backport (partially) python 3.12 support

Message ID 20231215075239.3049865-20-alex@linutronix.de
State Accepted, archived
Headers show
Series [01/20] python3-pyinotify: remove as unmaintained | expand

Commit Message

Alexander Kanavin Dec. 15, 2023, 7:52 a.m. UTC
Signed-off-by: Alexander Kanavin <alex@linutronix.de>
---
 ...001-build-fix-build-with-Python-3.12.patch | 55 ++++++++++++++++
 .../0001-gyp-resolve-python-3.12-issues.patch | 63 +++++++++++++++++++
 .../recipes-devtools/nodejs/nodejs_20.8.1.bb  |  4 +-
 3 files changed, 121 insertions(+), 1 deletion(-)
 create mode 100644 meta-oe/recipes-devtools/nodejs/nodejs/0001-build-fix-build-with-Python-3.12.patch
 create mode 100644 meta-oe/recipes-devtools/nodejs/nodejs/0001-gyp-resolve-python-3.12-issues.patch

Comments

Khem Raj Dec. 20, 2023, 7:12 p.m. UTC | #1
this is regressing some dependent recipe e.g. simpleiot which depends
on gyp from nodejs-native

https://github.com/YoeDistro/yoe-distro/actions/runs/7258317572/job/19834510249?pr=882

On Thu, Dec 14, 2023 at 11:53 PM Alexander Kanavin
<alex.kanavin@gmail.com> wrote:
>
> Signed-off-by: Alexander Kanavin <alex@linutronix.de>
> ---
>  ...001-build-fix-build-with-Python-3.12.patch | 55 ++++++++++++++++
>  .../0001-gyp-resolve-python-3.12-issues.patch | 63 +++++++++++++++++++
>  .../recipes-devtools/nodejs/nodejs_20.8.1.bb  |  4 +-
>  3 files changed, 121 insertions(+), 1 deletion(-)
>  create mode 100644 meta-oe/recipes-devtools/nodejs/nodejs/0001-build-fix-build-with-Python-3.12.patch
>  create mode 100644 meta-oe/recipes-devtools/nodejs/nodejs/0001-gyp-resolve-python-3.12-issues.patch
>
> diff --git a/meta-oe/recipes-devtools/nodejs/nodejs/0001-build-fix-build-with-Python-3.12.patch b/meta-oe/recipes-devtools/nodejs/nodejs/0001-build-fix-build-with-Python-3.12.patch
> new file mode 100644
> index 000000000..39026d074
> --- /dev/null
> +++ b/meta-oe/recipes-devtools/nodejs/nodejs/0001-build-fix-build-with-Python-3.12.patch
> @@ -0,0 +1,55 @@
> +From 656f6c91f1da7f1e1ffb01e2de7d9026a84958b5 Mon Sep 17 00:00:00 2001
> +From: Luigi Pinca <luigipinca@gmail.com>
> +Date: Wed, 8 Nov 2023 21:20:53 +0100
> +Subject: [PATCH] build: fix build with Python 3.12
> +
> +Replace `distutils.version.StrictVersion` with
> +`packaging.version.Version`.
> +
> +Refs: https://github.com/nodejs/node/pull/50209#issuecomment-1795852539
> +PR-URL: https://github.com/nodejs/node/pull/50582
> +Reviewed-By: Richard Lau <rlau@redhat.com>
> +Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
> +
> +Upstream-Status: Backport [https://github.com/nodejs/node/commit/95534ad82f4e33f53fd50efe633d43f8da70cba6]
> +Signed-off-by: Alexander Kanavin <alex@linutronix.de>
> +---
> + configure.py | 11 +++++------
> + 1 file changed, 5 insertions(+), 6 deletions(-)
> +
> +diff --git a/configure.py b/configure.py
> +index 62f041ce..18fe7c14 100755
> +--- a/configure.py
> ++++ b/configure.py
> +@@ -14,8 +14,6 @@ import bz2
> + import io
> + from pathlib import Path
> +
> +-from distutils.version import StrictVersion
> +-
> + # If not run from node/, cd to node/.
> + os.chdir(Path(__file__).parent)
> +
> +@@ -30,6 +28,7 @@ tools_path = Path('tools')
> +
> + sys.path.insert(0, str(tools_path / 'gyp' / 'pylib'))
> + from gyp.common import GetFlavor
> ++from packaging.version import Version
> +
> + # imports in tools/configure.d
> + sys.path.insert(0, str(tools_path / 'configure.d'))
> +@@ -1565,10 +1564,10 @@ def configure_openssl(o):
> +     # supported asm compiler for AVX2. See https://github.com/openssl/openssl/
> +     # blob/OpenSSL_1_1_0-stable/crypto/modes/asm/aesni-gcm-x86_64.pl#L52-L69
> +     openssl110_asm_supported = \
> +-      ('gas_version' in variables and StrictVersion(variables['gas_version']) >= StrictVersion('2.23')) or \
> +-      ('xcode_version' in variables and StrictVersion(variables['xcode_version']) >= StrictVersion('5.0')) or \
> +-      ('llvm_version' in variables and StrictVersion(variables['llvm_version']) >= StrictVersion('3.3')) or \
> +-      ('nasm_version' in variables and StrictVersion(variables['nasm_version']) >= StrictVersion('2.10'))
> ++      ('gas_version' in variables and Version(variables['gas_version']) >= Version('2.23')) or \
> ++      ('xcode_version' in variables and Version(variables['xcode_version']) >= Version('5.0')) or \
> ++      ('llvm_version' in variables and Version(variables['llvm_version']) >= Version('3.3')) or \
> ++      ('nasm_version' in variables and Version(variables['nasm_version']) >= Version('2.10'))
> +
> +     if is_x86 and not openssl110_asm_supported:
> +       error('''Did not find a new enough assembler, install one or build with
> diff --git a/meta-oe/recipes-devtools/nodejs/nodejs/0001-gyp-resolve-python-3.12-issues.patch b/meta-oe/recipes-devtools/nodejs/nodejs/0001-gyp-resolve-python-3.12-issues.patch
> new file mode 100644
> index 000000000..9d878dfb8
> --- /dev/null
> +++ b/meta-oe/recipes-devtools/nodejs/nodejs/0001-gyp-resolve-python-3.12-issues.patch
> @@ -0,0 +1,63 @@
> +From bf8c96ba6936050ed4a0de5bc8aeeaf2b3c50dc1 Mon Sep 17 00:00:00 2001
> +From: Alexander Kanavin <alex@linutronix.de>
> +Date: Thu, 7 Dec 2023 12:54:30 +0100
> +Subject: [PATCH] gyp: resolve python 3.12 issues
> +
> +Upstream has updated gyp wholesale in the main branch, so
> +this patch can be dropped in due time.
> +
> +Upstream-Status: Inappropriate [issue will be fixed upstream with the next nodejs LTS update]
> +
> +Signed-off-by: Alexander Kanavin <alex@linutronix.de>
> +---
> + deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py | 4 ++--
> + tools/gyp/pylib/gyp/input.py                          | 4 ++--
> + 2 files changed, 4 insertions(+), 4 deletions(-)
> +
> +diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py
> +index d9699a0a..173e9465 100644
> +--- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py
> ++++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py
> +@@ -16,7 +16,7 @@ import subprocess
> + import sys
> + import threading
> + import traceback
> +-from distutils.version import StrictVersion
> ++from packaging.version import Version
> + from gyp.common import GypError
> + from gyp.common import OrderedSet
> +
> +@@ -1183,7 +1183,7 @@ def EvalSingleCondition(cond_expr, true_dict, false_dict, phase, variables, buil
> +         else:
> +             ast_code = compile(cond_expr_expanded, "<string>", "eval")
> +             cached_conditions_asts[cond_expr_expanded] = ast_code
> +-        env = {"__builtins__": {}, "v": StrictVersion}
> ++        env = {"__builtins__": {}, "v": Version}
> +         if eval(ast_code, env, variables):
> +             return true_dict
> +         return false_dict
> +diff --git a/tools/gyp/pylib/gyp/input.py b/tools/gyp/pylib/gyp/input.py
> +index 354958bf..ab6112e5 100644
> +--- a/tools/gyp/pylib/gyp/input.py
> ++++ b/tools/gyp/pylib/gyp/input.py
> +@@ -16,7 +16,7 @@ import subprocess
> + import sys
> + import threading
> + import traceback
> +-from distutils.version import StrictVersion
> ++from packaging.version import Version
> + from gyp.common import GypError
> + from gyp.common import OrderedSet
> +
> +@@ -1190,7 +1190,7 @@ def EvalSingleCondition(cond_expr, true_dict, false_dict, phase, variables, buil
> +         else:
> +             ast_code = compile(cond_expr_expanded, "<string>", "eval")
> +             cached_conditions_asts[cond_expr_expanded] = ast_code
> +-        env = {"__builtins__": {}, "v": StrictVersion}
> ++        env = {"__builtins__": {}, "v": Version}
> +         if eval(ast_code, env, variables):
> +             return true_dict
> +         return false_dict
> +--
> +2.39.2
> +
> diff --git a/meta-oe/recipes-devtools/nodejs/nodejs_20.8.1.bb b/meta-oe/recipes-devtools/nodejs/nodejs_20.8.1.bb
> index 65f4eb3f3..0ca0c1498 100644
> --- a/meta-oe/recipes-devtools/nodejs/nodejs_20.8.1.bb
> +++ b/meta-oe/recipes-devtools/nodejs/nodejs_20.8.1.bb
> @@ -5,7 +5,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=162595a4a2f3453a0534e60b0afe4e7b"
>
>  CVE_PRODUCT = "nodejs node.js"
>
> -DEPENDS = "openssl file-replacement-native"
> +DEPENDS = "openssl file-replacement-native python3-packaging-native"
>  DEPENDS:append:class-target = " qemu-native"
>  DEPENDS:append:class-native = " c-ares-native"
>
> @@ -27,6 +27,8 @@ SRC_URI = "http://nodejs.org/dist/v${PV}/node-v${PV}.tar.xz \
>             file://0001-Revert-io_uring-changes-from-libuv-1.46.0.patch \
>             file://0002-Revert-io_uring-changes-from-libuv-1.45.0.patch \
>             file://run-ptest \
> +           file://0001-build-fix-build-with-Python-3.12.patch \
> +           file://0001-gyp-resolve-python-3.12-issues.patch \
>             "
>
>  SRC_URI:append:class-target = " \
> --
> 2.39.2
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#107513): https://lists.openembedded.org/g/openembedded-devel/message/107513
> Mute This Topic: https://lists.openembedded.org/mt/103186676/1997914
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Alexander Kanavin Dec. 20, 2023, 8:45 p.m. UTC | #2
| npm ERR! ModuleNotFoundError: No module named 'packaging'

Looks like python3-packaging needs to be in RDEPENDS as well, I'll
make a fix (or you can quickly try to see if it resolves the error).

Alex

On Wed, 20 Dec 2023 at 20:12, Khem Raj <raj.khem@gmail.com> wrote:
>
> this is regressing some dependent recipe e.g. simpleiot which depends
> on gyp from nodejs-native
>
> https://github.com/YoeDistro/yoe-distro/actions/runs/7258317572/job/19834510249?pr=882
>
> On Thu, Dec 14, 2023 at 11:53 PM Alexander Kanavin
> <alex.kanavin@gmail.com> wrote:
> >
> > Signed-off-by: Alexander Kanavin <alex@linutronix.de>
> > ---
> >  ...001-build-fix-build-with-Python-3.12.patch | 55 ++++++++++++++++
> >  .../0001-gyp-resolve-python-3.12-issues.patch | 63 +++++++++++++++++++
> >  .../recipes-devtools/nodejs/nodejs_20.8.1.bb  |  4 +-
> >  3 files changed, 121 insertions(+), 1 deletion(-)
> >  create mode 100644 meta-oe/recipes-devtools/nodejs/nodejs/0001-build-fix-build-with-Python-3.12.patch
> >  create mode 100644 meta-oe/recipes-devtools/nodejs/nodejs/0001-gyp-resolve-python-3.12-issues.patch
> >
> > diff --git a/meta-oe/recipes-devtools/nodejs/nodejs/0001-build-fix-build-with-Python-3.12.patch b/meta-oe/recipes-devtools/nodejs/nodejs/0001-build-fix-build-with-Python-3.12.patch
> > new file mode 100644
> > index 000000000..39026d074
> > --- /dev/null
> > +++ b/meta-oe/recipes-devtools/nodejs/nodejs/0001-build-fix-build-with-Python-3.12.patch
> > @@ -0,0 +1,55 @@
> > +From 656f6c91f1da7f1e1ffb01e2de7d9026a84958b5 Mon Sep 17 00:00:00 2001
> > +From: Luigi Pinca <luigipinca@gmail.com>
> > +Date: Wed, 8 Nov 2023 21:20:53 +0100
> > +Subject: [PATCH] build: fix build with Python 3.12
> > +
> > +Replace `distutils.version.StrictVersion` with
> > +`packaging.version.Version`.
> > +
> > +Refs: https://github.com/nodejs/node/pull/50209#issuecomment-1795852539
> > +PR-URL: https://github.com/nodejs/node/pull/50582
> > +Reviewed-By: Richard Lau <rlau@redhat.com>
> > +Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
> > +
> > +Upstream-Status: Backport [https://github.com/nodejs/node/commit/95534ad82f4e33f53fd50efe633d43f8da70cba6]
> > +Signed-off-by: Alexander Kanavin <alex@linutronix.de>
> > +---
> > + configure.py | 11 +++++------
> > + 1 file changed, 5 insertions(+), 6 deletions(-)
> > +
> > +diff --git a/configure.py b/configure.py
> > +index 62f041ce..18fe7c14 100755
> > +--- a/configure.py
> > ++++ b/configure.py
> > +@@ -14,8 +14,6 @@ import bz2
> > + import io
> > + from pathlib import Path
> > +
> > +-from distutils.version import StrictVersion
> > +-
> > + # If not run from node/, cd to node/.
> > + os.chdir(Path(__file__).parent)
> > +
> > +@@ -30,6 +28,7 @@ tools_path = Path('tools')
> > +
> > + sys.path.insert(0, str(tools_path / 'gyp' / 'pylib'))
> > + from gyp.common import GetFlavor
> > ++from packaging.version import Version
> > +
> > + # imports in tools/configure.d
> > + sys.path.insert(0, str(tools_path / 'configure.d'))
> > +@@ -1565,10 +1564,10 @@ def configure_openssl(o):
> > +     # supported asm compiler for AVX2. See https://github.com/openssl/openssl/
> > +     # blob/OpenSSL_1_1_0-stable/crypto/modes/asm/aesni-gcm-x86_64.pl#L52-L69
> > +     openssl110_asm_supported = \
> > +-      ('gas_version' in variables and StrictVersion(variables['gas_version']) >= StrictVersion('2.23')) or \
> > +-      ('xcode_version' in variables and StrictVersion(variables['xcode_version']) >= StrictVersion('5.0')) or \
> > +-      ('llvm_version' in variables and StrictVersion(variables['llvm_version']) >= StrictVersion('3.3')) or \
> > +-      ('nasm_version' in variables and StrictVersion(variables['nasm_version']) >= StrictVersion('2.10'))
> > ++      ('gas_version' in variables and Version(variables['gas_version']) >= Version('2.23')) or \
> > ++      ('xcode_version' in variables and Version(variables['xcode_version']) >= Version('5.0')) or \
> > ++      ('llvm_version' in variables and Version(variables['llvm_version']) >= Version('3.3')) or \
> > ++      ('nasm_version' in variables and Version(variables['nasm_version']) >= Version('2.10'))
> > +
> > +     if is_x86 and not openssl110_asm_supported:
> > +       error('''Did not find a new enough assembler, install one or build with
> > diff --git a/meta-oe/recipes-devtools/nodejs/nodejs/0001-gyp-resolve-python-3.12-issues.patch b/meta-oe/recipes-devtools/nodejs/nodejs/0001-gyp-resolve-python-3.12-issues.patch
> > new file mode 100644
> > index 000000000..9d878dfb8
> > --- /dev/null
> > +++ b/meta-oe/recipes-devtools/nodejs/nodejs/0001-gyp-resolve-python-3.12-issues.patch
> > @@ -0,0 +1,63 @@
> > +From bf8c96ba6936050ed4a0de5bc8aeeaf2b3c50dc1 Mon Sep 17 00:00:00 2001
> > +From: Alexander Kanavin <alex@linutronix.de>
> > +Date: Thu, 7 Dec 2023 12:54:30 +0100
> > +Subject: [PATCH] gyp: resolve python 3.12 issues
> > +
> > +Upstream has updated gyp wholesale in the main branch, so
> > +this patch can be dropped in due time.
> > +
> > +Upstream-Status: Inappropriate [issue will be fixed upstream with the next nodejs LTS update]
> > +
> > +Signed-off-by: Alexander Kanavin <alex@linutronix.de>
> > +---
> > + deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py | 4 ++--
> > + tools/gyp/pylib/gyp/input.py                          | 4 ++--
> > + 2 files changed, 4 insertions(+), 4 deletions(-)
> > +
> > +diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py
> > +index d9699a0a..173e9465 100644
> > +--- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py
> > ++++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py
> > +@@ -16,7 +16,7 @@ import subprocess
> > + import sys
> > + import threading
> > + import traceback
> > +-from distutils.version import StrictVersion
> > ++from packaging.version import Version
> > + from gyp.common import GypError
> > + from gyp.common import OrderedSet
> > +
> > +@@ -1183,7 +1183,7 @@ def EvalSingleCondition(cond_expr, true_dict, false_dict, phase, variables, buil
> > +         else:
> > +             ast_code = compile(cond_expr_expanded, "<string>", "eval")
> > +             cached_conditions_asts[cond_expr_expanded] = ast_code
> > +-        env = {"__builtins__": {}, "v": StrictVersion}
> > ++        env = {"__builtins__": {}, "v": Version}
> > +         if eval(ast_code, env, variables):
> > +             return true_dict
> > +         return false_dict
> > +diff --git a/tools/gyp/pylib/gyp/input.py b/tools/gyp/pylib/gyp/input.py
> > +index 354958bf..ab6112e5 100644
> > +--- a/tools/gyp/pylib/gyp/input.py
> > ++++ b/tools/gyp/pylib/gyp/input.py
> > +@@ -16,7 +16,7 @@ import subprocess
> > + import sys
> > + import threading
> > + import traceback
> > +-from distutils.version import StrictVersion
> > ++from packaging.version import Version
> > + from gyp.common import GypError
> > + from gyp.common import OrderedSet
> > +
> > +@@ -1190,7 +1190,7 @@ def EvalSingleCondition(cond_expr, true_dict, false_dict, phase, variables, buil
> > +         else:
> > +             ast_code = compile(cond_expr_expanded, "<string>", "eval")
> > +             cached_conditions_asts[cond_expr_expanded] = ast_code
> > +-        env = {"__builtins__": {}, "v": StrictVersion}
> > ++        env = {"__builtins__": {}, "v": Version}
> > +         if eval(ast_code, env, variables):
> > +             return true_dict
> > +         return false_dict
> > +--
> > +2.39.2
> > +
> > diff --git a/meta-oe/recipes-devtools/nodejs/nodejs_20.8.1.bb b/meta-oe/recipes-devtools/nodejs/nodejs_20.8.1.bb
> > index 65f4eb3f3..0ca0c1498 100644
> > --- a/meta-oe/recipes-devtools/nodejs/nodejs_20.8.1.bb
> > +++ b/meta-oe/recipes-devtools/nodejs/nodejs_20.8.1.bb
> > @@ -5,7 +5,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=162595a4a2f3453a0534e60b0afe4e7b"
> >
> >  CVE_PRODUCT = "nodejs node.js"
> >
> > -DEPENDS = "openssl file-replacement-native"
> > +DEPENDS = "openssl file-replacement-native python3-packaging-native"
> >  DEPENDS:append:class-target = " qemu-native"
> >  DEPENDS:append:class-native = " c-ares-native"
> >
> > @@ -27,6 +27,8 @@ SRC_URI = "http://nodejs.org/dist/v${PV}/node-v${PV}.tar.xz \
> >             file://0001-Revert-io_uring-changes-from-libuv-1.46.0.patch \
> >             file://0002-Revert-io_uring-changes-from-libuv-1.45.0.patch \
> >             file://run-ptest \
> > +           file://0001-build-fix-build-with-Python-3.12.patch \
> > +           file://0001-gyp-resolve-python-3.12-issues.patch \
> >             "
> >
> >  SRC_URI:append:class-target = " \
> > --
> > 2.39.2
> >
> >
> > -=-=-=-=-=-=-=-=-=-=-=-
> > Links: You receive all messages sent to this group.
> > View/Reply Online (#107513): https://lists.openembedded.org/g/openembedded-devel/message/107513
> > Mute This Topic: https://lists.openembedded.org/mt/103186676/1997914
> > Group Owner: openembedded-devel+owner@lists.openembedded.org
> > Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [raj.khem@gmail.com]
> > -=-=-=-=-=-=-=-=-=-=-=-
> >
Khem Raj Dec. 21, 2023, 12:17 a.m. UTC | #3
I fixed it with
https://github.com/YoeDistro/yoe-distro/pull/882/commits/359ac8dbaef7e531143b9ad48e1a7d8824efa6f6

On Wed, Dec 20, 2023 at 12:45 PM Alexander Kanavin
<alex.kanavin@gmail.com> wrote:
>
> | npm ERR! ModuleNotFoundError: No module named 'packaging'
>
> Looks like python3-packaging needs to be in RDEPENDS as well, I'll
> make a fix (or you can quickly try to see if it resolves the error).
>
> Alex
>
> On Wed, 20 Dec 2023 at 20:12, Khem Raj <raj.khem@gmail.com> wrote:
> >
> > this is regressing some dependent recipe e.g. simpleiot which depends
> > on gyp from nodejs-native
> >
> > https://github.com/YoeDistro/yoe-distro/actions/runs/7258317572/job/19834510249?pr=882
> >
> > On Thu, Dec 14, 2023 at 11:53 PM Alexander Kanavin
> > <alex.kanavin@gmail.com> wrote:
> > >
> > > Signed-off-by: Alexander Kanavin <alex@linutronix.de>
> > > ---
> > >  ...001-build-fix-build-with-Python-3.12.patch | 55 ++++++++++++++++
> > >  .../0001-gyp-resolve-python-3.12-issues.patch | 63 +++++++++++++++++++
> > >  .../recipes-devtools/nodejs/nodejs_20.8.1.bb  |  4 +-
> > >  3 files changed, 121 insertions(+), 1 deletion(-)
> > >  create mode 100644 meta-oe/recipes-devtools/nodejs/nodejs/0001-build-fix-build-with-Python-3.12.patch
> > >  create mode 100644 meta-oe/recipes-devtools/nodejs/nodejs/0001-gyp-resolve-python-3.12-issues.patch
> > >
> > > diff --git a/meta-oe/recipes-devtools/nodejs/nodejs/0001-build-fix-build-with-Python-3.12.patch b/meta-oe/recipes-devtools/nodejs/nodejs/0001-build-fix-build-with-Python-3.12.patch
> > > new file mode 100644
> > > index 000000000..39026d074
> > > --- /dev/null
> > > +++ b/meta-oe/recipes-devtools/nodejs/nodejs/0001-build-fix-build-with-Python-3.12.patch
> > > @@ -0,0 +1,55 @@
> > > +From 656f6c91f1da7f1e1ffb01e2de7d9026a84958b5 Mon Sep 17 00:00:00 2001
> > > +From: Luigi Pinca <luigipinca@gmail.com>
> > > +Date: Wed, 8 Nov 2023 21:20:53 +0100
> > > +Subject: [PATCH] build: fix build with Python 3.12
> > > +
> > > +Replace `distutils.version.StrictVersion` with
> > > +`packaging.version.Version`.
> > > +
> > > +Refs: https://github.com/nodejs/node/pull/50209#issuecomment-1795852539
> > > +PR-URL: https://github.com/nodejs/node/pull/50582
> > > +Reviewed-By: Richard Lau <rlau@redhat.com>
> > > +Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
> > > +
> > > +Upstream-Status: Backport [https://github.com/nodejs/node/commit/95534ad82f4e33f53fd50efe633d43f8da70cba6]
> > > +Signed-off-by: Alexander Kanavin <alex@linutronix.de>
> > > +---
> > > + configure.py | 11 +++++------
> > > + 1 file changed, 5 insertions(+), 6 deletions(-)
> > > +
> > > +diff --git a/configure.py b/configure.py
> > > +index 62f041ce..18fe7c14 100755
> > > +--- a/configure.py
> > > ++++ b/configure.py
> > > +@@ -14,8 +14,6 @@ import bz2
> > > + import io
> > > + from pathlib import Path
> > > +
> > > +-from distutils.version import StrictVersion
> > > +-
> > > + # If not run from node/, cd to node/.
> > > + os.chdir(Path(__file__).parent)
> > > +
> > > +@@ -30,6 +28,7 @@ tools_path = Path('tools')
> > > +
> > > + sys.path.insert(0, str(tools_path / 'gyp' / 'pylib'))
> > > + from gyp.common import GetFlavor
> > > ++from packaging.version import Version
> > > +
> > > + # imports in tools/configure.d
> > > + sys.path.insert(0, str(tools_path / 'configure.d'))
> > > +@@ -1565,10 +1564,10 @@ def configure_openssl(o):
> > > +     # supported asm compiler for AVX2. See https://github.com/openssl/openssl/
> > > +     # blob/OpenSSL_1_1_0-stable/crypto/modes/asm/aesni-gcm-x86_64.pl#L52-L69
> > > +     openssl110_asm_supported = \
> > > +-      ('gas_version' in variables and StrictVersion(variables['gas_version']) >= StrictVersion('2.23')) or \
> > > +-      ('xcode_version' in variables and StrictVersion(variables['xcode_version']) >= StrictVersion('5.0')) or \
> > > +-      ('llvm_version' in variables and StrictVersion(variables['llvm_version']) >= StrictVersion('3.3')) or \
> > > +-      ('nasm_version' in variables and StrictVersion(variables['nasm_version']) >= StrictVersion('2.10'))
> > > ++      ('gas_version' in variables and Version(variables['gas_version']) >= Version('2.23')) or \
> > > ++      ('xcode_version' in variables and Version(variables['xcode_version']) >= Version('5.0')) or \
> > > ++      ('llvm_version' in variables and Version(variables['llvm_version']) >= Version('3.3')) or \
> > > ++      ('nasm_version' in variables and Version(variables['nasm_version']) >= Version('2.10'))
> > > +
> > > +     if is_x86 and not openssl110_asm_supported:
> > > +       error('''Did not find a new enough assembler, install one or build with
> > > diff --git a/meta-oe/recipes-devtools/nodejs/nodejs/0001-gyp-resolve-python-3.12-issues.patch b/meta-oe/recipes-devtools/nodejs/nodejs/0001-gyp-resolve-python-3.12-issues.patch
> > > new file mode 100644
> > > index 000000000..9d878dfb8
> > > --- /dev/null
> > > +++ b/meta-oe/recipes-devtools/nodejs/nodejs/0001-gyp-resolve-python-3.12-issues.patch
> > > @@ -0,0 +1,63 @@
> > > +From bf8c96ba6936050ed4a0de5bc8aeeaf2b3c50dc1 Mon Sep 17 00:00:00 2001
> > > +From: Alexander Kanavin <alex@linutronix.de>
> > > +Date: Thu, 7 Dec 2023 12:54:30 +0100
> > > +Subject: [PATCH] gyp: resolve python 3.12 issues
> > > +
> > > +Upstream has updated gyp wholesale in the main branch, so
> > > +this patch can be dropped in due time.
> > > +
> > > +Upstream-Status: Inappropriate [issue will be fixed upstream with the next nodejs LTS update]
> > > +
> > > +Signed-off-by: Alexander Kanavin <alex@linutronix.de>
> > > +---
> > > + deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py | 4 ++--
> > > + tools/gyp/pylib/gyp/input.py                          | 4 ++--
> > > + 2 files changed, 4 insertions(+), 4 deletions(-)
> > > +
> > > +diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py
> > > +index d9699a0a..173e9465 100644
> > > +--- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py
> > > ++++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py
> > > +@@ -16,7 +16,7 @@ import subprocess
> > > + import sys
> > > + import threading
> > > + import traceback
> > > +-from distutils.version import StrictVersion
> > > ++from packaging.version import Version
> > > + from gyp.common import GypError
> > > + from gyp.common import OrderedSet
> > > +
> > > +@@ -1183,7 +1183,7 @@ def EvalSingleCondition(cond_expr, true_dict, false_dict, phase, variables, buil
> > > +         else:
> > > +             ast_code = compile(cond_expr_expanded, "<string>", "eval")
> > > +             cached_conditions_asts[cond_expr_expanded] = ast_code
> > > +-        env = {"__builtins__": {}, "v": StrictVersion}
> > > ++        env = {"__builtins__": {}, "v": Version}
> > > +         if eval(ast_code, env, variables):
> > > +             return true_dict
> > > +         return false_dict
> > > +diff --git a/tools/gyp/pylib/gyp/input.py b/tools/gyp/pylib/gyp/input.py
> > > +index 354958bf..ab6112e5 100644
> > > +--- a/tools/gyp/pylib/gyp/input.py
> > > ++++ b/tools/gyp/pylib/gyp/input.py
> > > +@@ -16,7 +16,7 @@ import subprocess
> > > + import sys
> > > + import threading
> > > + import traceback
> > > +-from distutils.version import StrictVersion
> > > ++from packaging.version import Version
> > > + from gyp.common import GypError
> > > + from gyp.common import OrderedSet
> > > +
> > > +@@ -1190,7 +1190,7 @@ def EvalSingleCondition(cond_expr, true_dict, false_dict, phase, variables, buil
> > > +         else:
> > > +             ast_code = compile(cond_expr_expanded, "<string>", "eval")
> > > +             cached_conditions_asts[cond_expr_expanded] = ast_code
> > > +-        env = {"__builtins__": {}, "v": StrictVersion}
> > > ++        env = {"__builtins__": {}, "v": Version}
> > > +         if eval(ast_code, env, variables):
> > > +             return true_dict
> > > +         return false_dict
> > > +--
> > > +2.39.2
> > > +
> > > diff --git a/meta-oe/recipes-devtools/nodejs/nodejs_20.8.1.bb b/meta-oe/recipes-devtools/nodejs/nodejs_20.8.1.bb
> > > index 65f4eb3f3..0ca0c1498 100644
> > > --- a/meta-oe/recipes-devtools/nodejs/nodejs_20.8.1.bb
> > > +++ b/meta-oe/recipes-devtools/nodejs/nodejs_20.8.1.bb
> > > @@ -5,7 +5,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=162595a4a2f3453a0534e60b0afe4e7b"
> > >
> > >  CVE_PRODUCT = "nodejs node.js"
> > >
> > > -DEPENDS = "openssl file-replacement-native"
> > > +DEPENDS = "openssl file-replacement-native python3-packaging-native"
> > >  DEPENDS:append:class-target = " qemu-native"
> > >  DEPENDS:append:class-native = " c-ares-native"
> > >
> > > @@ -27,6 +27,8 @@ SRC_URI = "http://nodejs.org/dist/v${PV}/node-v${PV}.tar.xz \
> > >             file://0001-Revert-io_uring-changes-from-libuv-1.46.0.patch \
> > >             file://0002-Revert-io_uring-changes-from-libuv-1.45.0.patch \
> > >             file://run-ptest \
> > > +           file://0001-build-fix-build-with-Python-3.12.patch \
> > > +           file://0001-gyp-resolve-python-3.12-issues.patch \
> > >             "
> > >
> > >  SRC_URI:append:class-target = " \
> > > --
> > > 2.39.2
> > >
> > >
> > > -=-=-=-=-=-=-=-=-=-=-=-
> > > Links: You receive all messages sent to this group.
> > > View/Reply Online (#107513): https://lists.openembedded.org/g/openembedded-devel/message/107513
> > > Mute This Topic: https://lists.openembedded.org/mt/103186676/1997914
> > > Group Owner: openembedded-devel+owner@lists.openembedded.org
> > > Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [raj.khem@gmail.com]
> > > -=-=-=-=-=-=-=-=-=-=-=-
> > >
diff mbox series

Patch

diff --git a/meta-oe/recipes-devtools/nodejs/nodejs/0001-build-fix-build-with-Python-3.12.patch b/meta-oe/recipes-devtools/nodejs/nodejs/0001-build-fix-build-with-Python-3.12.patch
new file mode 100644
index 000000000..39026d074
--- /dev/null
+++ b/meta-oe/recipes-devtools/nodejs/nodejs/0001-build-fix-build-with-Python-3.12.patch
@@ -0,0 +1,55 @@ 
+From 656f6c91f1da7f1e1ffb01e2de7d9026a84958b5 Mon Sep 17 00:00:00 2001
+From: Luigi Pinca <luigipinca@gmail.com>
+Date: Wed, 8 Nov 2023 21:20:53 +0100
+Subject: [PATCH] build: fix build with Python 3.12
+
+Replace `distutils.version.StrictVersion` with
+`packaging.version.Version`.
+
+Refs: https://github.com/nodejs/node/pull/50209#issuecomment-1795852539
+PR-URL: https://github.com/nodejs/node/pull/50582
+Reviewed-By: Richard Lau <rlau@redhat.com>
+Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
+
+Upstream-Status: Backport [https://github.com/nodejs/node/commit/95534ad82f4e33f53fd50efe633d43f8da70cba6]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ configure.py | 11 +++++------
+ 1 file changed, 5 insertions(+), 6 deletions(-)
+
+diff --git a/configure.py b/configure.py
+index 62f041ce..18fe7c14 100755
+--- a/configure.py
++++ b/configure.py
+@@ -14,8 +14,6 @@ import bz2
+ import io
+ from pathlib import Path
+ 
+-from distutils.version import StrictVersion
+-
+ # If not run from node/, cd to node/.
+ os.chdir(Path(__file__).parent)
+ 
+@@ -30,6 +28,7 @@ tools_path = Path('tools')
+ 
+ sys.path.insert(0, str(tools_path / 'gyp' / 'pylib'))
+ from gyp.common import GetFlavor
++from packaging.version import Version
+ 
+ # imports in tools/configure.d
+ sys.path.insert(0, str(tools_path / 'configure.d'))
+@@ -1565,10 +1564,10 @@ def configure_openssl(o):
+     # supported asm compiler for AVX2. See https://github.com/openssl/openssl/
+     # blob/OpenSSL_1_1_0-stable/crypto/modes/asm/aesni-gcm-x86_64.pl#L52-L69
+     openssl110_asm_supported = \
+-      ('gas_version' in variables and StrictVersion(variables['gas_version']) >= StrictVersion('2.23')) or \
+-      ('xcode_version' in variables and StrictVersion(variables['xcode_version']) >= StrictVersion('5.0')) or \
+-      ('llvm_version' in variables and StrictVersion(variables['llvm_version']) >= StrictVersion('3.3')) or \
+-      ('nasm_version' in variables and StrictVersion(variables['nasm_version']) >= StrictVersion('2.10'))
++      ('gas_version' in variables and Version(variables['gas_version']) >= Version('2.23')) or \
++      ('xcode_version' in variables and Version(variables['xcode_version']) >= Version('5.0')) or \
++      ('llvm_version' in variables and Version(variables['llvm_version']) >= Version('3.3')) or \
++      ('nasm_version' in variables and Version(variables['nasm_version']) >= Version('2.10'))
+ 
+     if is_x86 and not openssl110_asm_supported:
+       error('''Did not find a new enough assembler, install one or build with
diff --git a/meta-oe/recipes-devtools/nodejs/nodejs/0001-gyp-resolve-python-3.12-issues.patch b/meta-oe/recipes-devtools/nodejs/nodejs/0001-gyp-resolve-python-3.12-issues.patch
new file mode 100644
index 000000000..9d878dfb8
--- /dev/null
+++ b/meta-oe/recipes-devtools/nodejs/nodejs/0001-gyp-resolve-python-3.12-issues.patch
@@ -0,0 +1,63 @@ 
+From bf8c96ba6936050ed4a0de5bc8aeeaf2b3c50dc1 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Thu, 7 Dec 2023 12:54:30 +0100
+Subject: [PATCH] gyp: resolve python 3.12 issues
+
+Upstream has updated gyp wholesale in the main branch, so
+this patch can be dropped in due time.
+
+Upstream-Status: Inappropriate [issue will be fixed upstream with the next nodejs LTS update]
+
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py | 4 ++--
+ tools/gyp/pylib/gyp/input.py                          | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py
+index d9699a0a..173e9465 100644
+--- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py
++++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py
+@@ -16,7 +16,7 @@ import subprocess
+ import sys
+ import threading
+ import traceback
+-from distutils.version import StrictVersion
++from packaging.version import Version
+ from gyp.common import GypError
+ from gyp.common import OrderedSet
+ 
+@@ -1183,7 +1183,7 @@ def EvalSingleCondition(cond_expr, true_dict, false_dict, phase, variables, buil
+         else:
+             ast_code = compile(cond_expr_expanded, "<string>", "eval")
+             cached_conditions_asts[cond_expr_expanded] = ast_code
+-        env = {"__builtins__": {}, "v": StrictVersion}
++        env = {"__builtins__": {}, "v": Version}
+         if eval(ast_code, env, variables):
+             return true_dict
+         return false_dict
+diff --git a/tools/gyp/pylib/gyp/input.py b/tools/gyp/pylib/gyp/input.py
+index 354958bf..ab6112e5 100644
+--- a/tools/gyp/pylib/gyp/input.py
++++ b/tools/gyp/pylib/gyp/input.py
+@@ -16,7 +16,7 @@ import subprocess
+ import sys
+ import threading
+ import traceback
+-from distutils.version import StrictVersion
++from packaging.version import Version
+ from gyp.common import GypError
+ from gyp.common import OrderedSet
+ 
+@@ -1190,7 +1190,7 @@ def EvalSingleCondition(cond_expr, true_dict, false_dict, phase, variables, buil
+         else:
+             ast_code = compile(cond_expr_expanded, "<string>", "eval")
+             cached_conditions_asts[cond_expr_expanded] = ast_code
+-        env = {"__builtins__": {}, "v": StrictVersion}
++        env = {"__builtins__": {}, "v": Version}
+         if eval(ast_code, env, variables):
+             return true_dict
+         return false_dict
+-- 
+2.39.2
+
diff --git a/meta-oe/recipes-devtools/nodejs/nodejs_20.8.1.bb b/meta-oe/recipes-devtools/nodejs/nodejs_20.8.1.bb
index 65f4eb3f3..0ca0c1498 100644
--- a/meta-oe/recipes-devtools/nodejs/nodejs_20.8.1.bb
+++ b/meta-oe/recipes-devtools/nodejs/nodejs_20.8.1.bb
@@ -5,7 +5,7 @@  LIC_FILES_CHKSUM = "file://LICENSE;md5=162595a4a2f3453a0534e60b0afe4e7b"
 
 CVE_PRODUCT = "nodejs node.js"
 
-DEPENDS = "openssl file-replacement-native"
+DEPENDS = "openssl file-replacement-native python3-packaging-native"
 DEPENDS:append:class-target = " qemu-native"
 DEPENDS:append:class-native = " c-ares-native"
 
@@ -27,6 +27,8 @@  SRC_URI = "http://nodejs.org/dist/v${PV}/node-v${PV}.tar.xz \
            file://0001-Revert-io_uring-changes-from-libuv-1.46.0.patch \
            file://0002-Revert-io_uring-changes-from-libuv-1.45.0.patch \
            file://run-ptest \
+           file://0001-build-fix-build-with-Python-3.12.patch \
+           file://0001-gyp-resolve-python-3.12-issues.patch \
            "
 
 SRC_URI:append:class-target = " \