Hi,

When trying to build nodejs with the latest ptxdist, I faced an error about 
missing a python module `ModuleNotFoundError: No module named '_bz2'` (see [1]).

I'm not very proficient with ptxdist, so I would like to check if the solution 
I came up is correct. Feedback welcome. If solution is ok, feel free to apply 
it upstream or ask for a proper email patch.

I think it's due to following issues:
- The host python is missing the option to support BZIP2. I added an option for 
that.
- nodejs.in says it depends on HOST_SYSTEM_PYTHON3, however it seems like the 
build isn't using system python but host python built by ptxdist. I think it 
should depend on HOST_PYTHON3 and the new HOST_PYTHON3_BZIP2.

See [2] for the patch I applied.

Kind regards,
Jean-Claude


[1] Error message

----------------------
target: nodejs.prepare
----------------------

Node.js configure: Found Python 3.11.2...
Traceback (most recent call last):
  File 
"/home/jean-claude/code/test-ptxdist/platform-nanopi-rk3588/build-target/node-v18.13.0/./configure",
 line 28, in <module>
    import configure
  File 
"/home/jean-claude/code/test-ptxdist/platform-nanopi-rk3588/build-target/node-v18.13.0/configure.py",
 line 14, in <module>
    import bz2
  File 
"/home/jean-claude/code/test-ptxdist/platform-nanopi-rk3588/sysroot-target/usr/lib/python3.11/bz2.py",
 line 17, in <module>
    from _bz2 import BZ2Compressor, BZ2Decompressor
ModuleNotFoundError: No module named '_bz2'


[2] possible patch

diff --git a/rules/host-python3.in b/rules/host-python3.in
index e15b90571..64f34affa 100644
--- a/rules/host-python3.in
+++ b/rules/host-python3.in
@@ -6,6 +6,7 @@ config HOST_PYTHON3
        select HOST_LIBFFI
        select HOST_OPENSSL
        select HOST_ZLIB                if HOST_PYTHON3_ZLIB
+       select HOST_BZIP2               if HOST_PYTHON3_BZIP2
        default y if ALLYES
        help
          Python is an interpreted, interactive,
@@ -16,4 +17,7 @@ if HOST_PYTHON3
 config HOST_PYTHON3_ZLIB
        bool
 
+config HOST_PYTHON3_BZIP2
+       bool
+
 endif
diff --git a/rules/nodejs.in b/rules/nodejs.in
index 80c6aec21..c75480953 100644
--- a/rules/nodejs.in
+++ b/rules/nodejs.in
@@ -3,7 +3,8 @@
 config NODEJS
        tristate
        prompt "Node.js                       "
-       select HOST_SYSTEM_PYTHON3
+       select HOST_PYTHON3
+       select HOST_PYTHON3_BZIP2
        select HOST_QEMU
        select HOST_QEMU_USR
        select C_ARES

Reply via email to