nodejs: fix build when python3 is selected in Buildroot

When Python 3 is selected in Buildroot, the host/usr/bin/python
symlink of the host Python interpreter points to python3. Packages
that need to use the host Python 2 interpreter have to use python2.

In commit 40218a1652 ("nodejs: force
python interpreter"), Samuel made some changes to the nodejs package
to use python2. One part of the changes is to sed a .gyp file to
replace the string 'python' by the path to python2. However, this
operation is done *after* calling the configure script, so it has in
fact no effect. Putting this sed before calling the configure script
fixes the problem.

However, there is a better solution: the nodejs build system has a
mechanism of variables, and it already defines a python variable
according to the environment variable PYTHON being passed. So this
patch instead adds a new patch to nodejs to use this python variable.

Fixes:

  http://autobuild.buildroot.org/results/aff/affd7300895ec400de50a33d51b4e94e15d63341/

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
Thomas Petazzoni 2014-05-21 09:38:01 +02:00 committed by Peter Korsgaard
parent 6d3336a2b0
commit 7e91d2b0e3
2 changed files with 43 additions and 6 deletions

View File

@ -0,0 +1,43 @@
Use a python variable instead of hardcoding Python
The nodejs build system uses python in a number of locations. However,
there are some locations where it hardcodes 'python' as the Python
interpreter. However, this causes problems when we need to use python2
instead of just python.
This patch fixes that by using the python variable already in place in
the nodejs build system.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Index: b/deps/v8/tools/gyp/v8.gyp
===================================================================
--- a/deps/v8/tools/gyp/v8.gyp
+++ b/deps/v8/tools/gyp/v8.gyp
@@ -792,7 +792,7 @@
'<(SHARED_INTERMEDIATE_DIR)/libraries.cc',
],
'action': [
- 'python',
+ '<(python)',
'../../tools/js2c.py',
'<@(_outputs)',
'CORE',
@@ -810,7 +810,7 @@
'<(SHARED_INTERMEDIATE_DIR)/experimental-libraries.cc',
],
'action': [
- 'python',
+ '<(python)',
'../../tools/js2c.py',
'<@(_outputs)',
'EXPERIMENTAL',
@@ -840,7 +840,7 @@
'<(SHARED_INTERMEDIATE_DIR)/debug-support.cc',
],
'action': [
- 'python',
+ '<(python)',
'../../tools/gen-postmortem-metadata.py',
'<@(_outputs)',
'<@(heapobject_files)'

View File

@ -19,8 +19,6 @@ endif
# nodejs build system is based on python, but only support python-2.6 or
# python-2.7. So, we have to enforce PYTHON interpreter to be python2.
# However, few build scripts hard-code 'python' as the interpreter to be
# invoked; so we have to manually fix them.
define HOST_NODEJS_CONFIGURE_CMDS
# Build with the static, built-in OpenSSL which is supplied as part of
# the nodejs source distribution. This is needed on the host because
@ -35,8 +33,6 @@ define HOST_NODEJS_CONFIGURE_CMDS
--without-dtrace \
--without-etw \
)
$(SED) "s@'python',@'$(HOST_DIR)/usr/bin/python2',@" \
$(@D)/deps/v8/tools/gyp/v8.gyp
endef
define HOST_NODEJS_BUILD_CMDS
@ -81,8 +77,6 @@ define NODEJS_CONFIGURE_CMDS
$(if $(NODEJS_ARM_FP),--with-arm-float-abi=$(NODEJS_ARM_FP)) \
--dest-os=linux \
)
$(SED) "s@'python',@'$(HOST_DIR)/usr/bin/python2',@" \
$(@D)/deps/v8/tools/gyp/v8.gyp
endef
define NODEJS_BUILD_CMDS