Skip to contentSkip to conversation

nodejs: fix build when python3 is selected in Buildroot

PATCH New Thomas Petazzoni 2 participants 3 messages May 20, 2014 – May 21, 2014

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 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 40218a16526946f35dab0d05f379f71a01f29530 ("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/

---
 .../nodejs/nodejs-0003-use-python-variable.patch   | 43 ++++++++++++++++++++++
 package/nodejs/nodejs.mk                           |  2 -
 2 files changed, 43 insertions(+), 2 deletions(-)
 create mode 100644 package/nodejs/nodejs-0003-use-python-variable.patch
package/nodejs/nodejs-0003-use-python-variable.patch new file +43 -0
new file mode 100644
index 0000000..f231f4c
@@ -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 <[email protected]>
+
+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)'
package/nodejs/nodejs.mk +0 -2
index b5973b5..7415bdf 100644
@@ -35,8 +35,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
Signature · 1 line
1.9.3
#1 lore raw

PATCH 1/1 nodejs: fix build when python3 is selected in Buildroot

HI Thomas,

Quoted 82 lines · Thomas Petazzoni

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 40218a16526946f35dab0d05f379f71a01f29530 ("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/

---
 .../nodejs/nodejs-0003-use-python-variable.patch   | 43 ++++++++++++++++++++++
 package/nodejs/nodejs.mk                           |  2 -
 2 files changed, 43 insertions(+), 2 deletions(-)
 create mode 100644 package/nodejs/nodejs-0003-use-python-variable.patch
package/nodejs/nodejs-0003-use-python-variable.patch new file +43 -0
new file mode 100644
index 0000000..f231f4c
@@ -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 <[email protected]>
+
+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)'
package/nodejs/nodejs.mk +0 -0
index b5973b5..7415bdf 100644

package/nodejs/nodejs.mk define HOST_NODEJS_CONFIGURE_CMDS · line 39

Quoted 5 lines
package/nodejs/nodejs.mk +0 -2
@@ -35,8 +35,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

The comment above 'define HOST_NODEJS_CONFIGURE_CMDS' should be updated to match.

baruch

Quoted 3 lines
package/nodejs/nodejs.mk +0 -0
 endef
 
 define HOST_NODEJS_BUILD_CMDS
Signature · 3 lines
     http://baruch.siach.name/blog/                  ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -
#2 lore raw

PATCH 1/1 nodejs: fix build when python3 is selected in Buildroot

Dear Baruch Siach,

Quoted 5 lines · Baruch Siach
Quoted 5 lines
package/nodejs/nodejs.mk +0 -0
index b5973b5..7415bdf 100644
@@ -35,8 +35,6 @@ define HOST_NODEJS_CONFIGURE_CMDS
Quoted 8 lines

package/nodejs/nodejs.mk define HOST_NODEJS_CONFIGURE_CMDS · line 39

Quoted 5 lines
package/nodejs/nodejs.mk +0 -2
 		--without-dtrace \
 		--without-etw \
 	)
-	$(SED) "s@'python',@'$(HOST_DIR)/usr/bin/python2',@" \
-		$(@D)/deps/v8/tools/gyp/v8.gyp

The comment above 'define HOST_NODEJS_CONFIGURE_CMDS' should be updated to match.

Ah, right, indeed. Will send a v2.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com