buildroot.busybox.net archive mirror
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 00/13] package/nodejs: rework cross-building
@ 2022-08-09  7:56 Alexandru Ardelean
  2022-08-09  7:56 ` [Buildroot] [PATCH 01/13] package/libuv: add host-build Alexandru Ardelean
                   ` (15 more replies)
  0 siblings, 16 replies; 25+ messages in thread
From: Alexandru Ardelean @ 2022-08-09  7:56 UTC (permalink / raw)
  To: buildroot; +Cc: Alexandru Ardelean, fontaine.fabrice, aduskett

A bit of introduction here.

I tried to build nodejs from Buildroot master, but I couldn't.
It could be that I did not setup something properly with regards to the
'v8-qemu-wrapper' stuff. I kept getting execution errors, when trying to
run the nodejs build-tools scripts (see details in the patches).
Either the host-qemu stuff isn't working correctly, or it needs some extra
setup.

That eventually sent me down the rabbit-hole of trying to get nodejs to
build for ARM64 (where I wanted it). It seems that nodejs cross-building
can be done via their own infra-structure, which isn't perfect, but it
seems usable; and it also looks like a good idea.

Using their cross-building stuff, has some issues/considerations:
* it's easiest when building a 32/64-bit target on a (same bit-width) 
  32/64-bit host; the host-{c-ares,icu,libuv,zlib} tools can be used
  for nodejs' host tools (in their cross-build infrastructure/tools)
* when building a 32-bit target on a 64-bit host, the nodejs cross-building
  logic will add the -m32 CFLAG, which will mean that the
  host-{c-ares,icu,libuv,zlib} tools will be unusable (they got compiled
  for 64-bit and are un-linkable to 32-bit binaries)
  This requires that the user install on their system the
  host-{c-ares,icu,libuv,zlib} 32 bit versions. I suspect that the
  BR2_HOSTARCH_NEEDS_IA32_{LIBS,COMPILER} symbols are intented for this
* I haven't tried to build 64-bit targets on 32-bit hosts, though I'd
  guess this is a rare corner case.

I eventually got nodejs to build & run on an RPi4 32 & 64 bit.

I'm not sure if this patchset is fully correct.

But some things can be useful from it:
* the host-libuv and host-nghttp2 packages (for other potential users)
* the 'fix ARM build with VFP3 instruction' patch (maybe)
* the 'build host-nodejs only if we're installing modules with NPM' patch
  looks to me that even without this rework, if we don't install any node
  modules on the target, we don't really need the host-nodejs build

Alexandru Ardelean (13):
  package/libuv: add host-build
  package/nghttp2: add host-build
  nodejs: remove v8-qemu-wrapper stuff
  nodejs: fix 'Duplicate v8 target errors when cross-compiling' error
  package/nodejs: add host-{c-ares,libuv,nghttp2} to deps
  package/nodejs: provide {CC,CXX,CFLAGS,CXXFLAGS,LDFLAGS}_host env vars
    to target-build
  package/nodejs: don't install nodejs host-tools
  package/nodejs: rename LDFLAGS.host -> LDFLAGS opt
  package/nodejs: impose dep on ia32 libs/compiler if target arch not 64
    bits
  package/nodejs: add host-zlib depedency to target package
  package/nodejs: fix ARM build with VFP3 instruction
  package/nodejs: add a hack to cross-compile 32-bit targets on x64
    hosts
  package/nodejs: build host-nodejs only if we're installing modules
    with NPM

 package/libuv/libuv.mk                        |  3 +
 package/nghttp2/nghttp2.mk                    |  1 +
 .../0001-add-qemu-wrapper-support.patch       | 88 -------------------
 ...lude-obj-name-in-shared-intermediate.patch | 24 +++++
 ...-x64-cross-compile-for-32-bit-target.patch | 71 +++++++++++++++
 package/nodejs/Config.in                      |  7 +-
 package/nodejs/Config.in.host                 |  5 +-
 package/nodejs/nodejs.mk                      | 67 +++++---------
 package/nodejs/v8-qemu-wrapper.in             |  9 --
 9 files changed, 129 insertions(+), 146 deletions(-)
 delete mode 100644 package/nodejs/0001-add-qemu-wrapper-support.patch
 create mode 100644 package/nodejs/0002-include-obj-name-in-shared-intermediate.patch
 create mode 100644 package/nodejs/0003-fix-host-x64-cross-compile-for-32-bit-target.patch
 delete mode 100644 package/nodejs/v8-qemu-wrapper.in

-- 
2.34.1

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2022-09-26 13:12 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-09  7:56 [Buildroot] [PATCH 00/13] package/nodejs: rework cross-building Alexandru Ardelean
2022-08-09  7:56 ` [Buildroot] [PATCH 01/13] package/libuv: add host-build Alexandru Ardelean
2022-08-09  7:56 ` [Buildroot] [PATCH 02/13] package/nghttp2: " Alexandru Ardelean
2022-08-09  7:56 ` [Buildroot] [PATCH 03/13] nodejs: remove v8-qemu-wrapper stuff Alexandru Ardelean
2022-08-09 11:49   ` Thomas Petazzoni via buildroot
2022-08-09 12:52     ` Alexandru Ardelean
2022-08-09  7:56 ` [Buildroot] [PATCH 04/13] nodejs: fix 'Duplicate v8 target errors when cross-compiling' error Alexandru Ardelean
2022-08-09  7:56 ` [Buildroot] [PATCH 05/13] package/nodejs: add host-{c-ares, libuv, nghttp2} to deps Alexandru Ardelean
2022-08-09  7:56 ` [Buildroot] [PATCH 06/13] package/nodejs: provide {CC, CXX, CFLAGS, CXXFLAGS, LDFLAGS}_host env vars to target-build Alexandru Ardelean
2022-08-09  7:56 ` [Buildroot] [PATCH 07/13] package/nodejs: don't install nodejs host-tools Alexandru Ardelean
2022-08-09  7:56 ` [Buildroot] [PATCH 08/13] package/nodejs: rename LDFLAGS.host -> LDFLAGS opt Alexandru Ardelean
2022-08-09  7:57 ` [Buildroot] [PATCH 09/13] package/nodejs: impose dep on ia32 libs/compiler if target arch not 64 bits Alexandru Ardelean
2022-08-09  7:57 ` [Buildroot] [PATCH 10/13] package/nodejs: add host-zlib depedency to target package Alexandru Ardelean
2022-08-09  7:57 ` [Buildroot] [PATCH 11/13] package/nodejs: fix ARM build with VFP3 instruction Alexandru Ardelean
2022-08-09  7:57 ` [Buildroot] [PATCH 12/13] package/nodejs: add a hack to cross-compile 32-bit targets on x64 hosts Alexandru Ardelean
2022-08-09  7:57 ` [Buildroot] [PATCH 13/13] package/nodejs: build host-nodejs only if we're installing modules with NPM Alexandru Ardelean
2022-08-09 11:42 ` [Buildroot] [PATCH 00/13] package/nodejs: rework cross-building Thomas Petazzoni via buildroot
2022-08-09 12:48   ` Alexandru Ardelean
2022-08-10 21:23 ` Thomas Petazzoni via buildroot
2022-08-11  7:48   ` Alexandru Ardelean
2022-09-25  8:27 ` Thomas Petazzoni
2022-09-25 15:17   ` Alexandru Ardelean
2022-09-25 16:15     ` Alexandru Ardelean
2022-09-25 18:41       ` Thomas Petazzoni
2022-09-26 13:11         ` Alexandru Ardelean

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).