From: Alexandru Ardelean <ardeleanalex@gmail.com>
To: buildroot@buildroot.org
Cc: Alexandru Ardelean <ardeleanalex@gmail.com>,
fontaine.fabrice@gmail.com, aduskett@gmail.com
Subject: [Buildroot] [PATCH 00/13] package/nodejs: rework cross-building
Date: Tue, 9 Aug 2022 10:56:51 +0300 [thread overview]
Message-ID: <20220809075704.86472-1-ardeleanalex@gmail.com> (raw)
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
next reply other threads:[~2022-08-09 7:57 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-09 7:56 Alexandru Ardelean [this message]
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220809075704.86472-1-ardeleanalex@gmail.com \
--to=ardeleanalex@gmail.com \
--cc=aduskett@gmail.com \
--cc=buildroot@buildroot.org \
--cc=fontaine.fabrice@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).