<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le mar. 12 oct. 2021 à 08:30, Helmut Grohne <<a href="mailto:helmut@subdivi.de">helmut@subdivi.de</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Source: nodejs<br>
Version: 12.22.5~dfsg-6<br>
Tags: patch<br>
User: <a href="mailto:debian-cross@lists.debian.org" target="_blank">debian-cross@lists.debian.org</a><br>
Usertags: ftcbfs<br>
<br>
nodejs fails to cross build from source, because its configure.py<br>
detects build architecture build tools such as gcc or pkg-config without<br>
the relevant host architecture prefix. (Do note that I'm using the gnu<br>
terminology also used in man dpkg-architecture here and that nodejs<br>
seems to be using a confusing mix of terminology.) It seems that<br>
configure.py expects that you export standard environment variables such<br>
as CC or PKG_CONFIG. The attached patch implements that.<br>
<br>
Unfortunately, it does not make nodejs cross buildable. A build then<br>
fails running gen-regexp-special-case with an "Exec format error", which<br>
typically means that the binary was compiled for the host architecture<br>
but needed for the build architecture.<br>
<br>
I researched this a bit and noticed that other cross distributions have<br>
run into the same problem.<br>
PtxDist: <a href="https://lore.ptxdist.org/ptxdist/20200113101809.3260-1-b.esser@pengutronix.de/" rel="noreferrer" target="_blank">https://lore.ptxdist.org/ptxdist/20200113101809.3260-1-b.esser@pengutronix.de/</a><br>
buildroot: <a href="https://github.com/buildroot/buildroot/blob/master/package/nodejs/nodejs.mk" rel="noreferrer" target="_blank">https://github.com/buildroot/buildroot/blob/master/package/nodejs/nodejs.mk</a><br>
<br>
<br>
In essence what they do is build nodejs twice. Once for the build<br>
architecture. Then they steal the relevant tools from that build tree<br>
and patch the build system to use those other tools. Likely Debian<br>
should do the same (or upstream should gain a sane solution here). I<br>
attempted doing this, but my native build for some reason didn't emit<br>
gen-regexp-special-cases. At that point, I gave up on this. </blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
While looking into this, I also noticed that you make the build<br>
non-parallel when building for a 32bit architecture. Is the intention<br>
really to make a cross build on amd64 for armhf non-parallel and leaving<br>
a cross build from on say mips for riscv64 parallel? I guess that you do<br>
mean the build architecture here.<br></blockquote><div><br></div><div>parallel builds of nodejs tend to crash on 32-bit because of limited resources.</div><div>If the host has lots of memory available, parallel builds should be enabled.</div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Please consider applying the attached patch to fix the obvious. At that<br>
point, please close the bug regardless of the other mentioned issues.<br></blockquote><div><br></div><div>Thank you. Will do.</div><div><br></div><div>Jérémy</div></div></div>