node-install: How about switching the default architecture automatically?
itchyny opened this issue · comments
Hi, tagomoris. Thanks for maintaining useful scripts.
We use node-install
in our Dockerfile
. As some of the team have M1 Mac and others have Intel Mac, and x64 emulation of Docker Desktop does not work in many images, we need the following code to selecting the architecture automatically.
RUN if [ "x$(arch)" = "xaarch64" ]; then ARCH="linux-arm64"; else ARCH="linux-x64"; fi \
&& /usr/local/xbuild/node-install v${NODE_VERSION} /xbuild/node-${NODE_VERSION} $ARCH
Otherwise, node-install
will fail with
++ dirname /usr/local/xbuild/node-install
+ cd /usr/local/xbuild
+ '[' x = x -a -d /xbuild/node-14.15.0 -a -x /xbuild/node-14.15.0/bin/node ']'
++ /xbuild/node-14.15.0/bin/node -v
/lib64/ld-linux-x86-64.so.2: No such file or directory
I understand the proper way to the solution is switching the architectures like the above code, growing number of Dockerfile fails to build on node-install
script as M1 Mac gets popularity. So my suggestion here is, how about selecting the linux-arm64
architecture based on $(arch)
?
I also understand making the script working well on any combination of OS (darwin/linux) and architectures, and I don't think it worth putting effort to. However, choosing whether linux-arm64
or linux-x64
will help various projects without fixing their Dockerfiles.
@itchyny That sounds a nice idea because many people are using Docker and also M1 mac will be a large part of developers' laptop. I'm happy to merge such changes.