tagomoris / xbuild

Language runtimes installer for production environment

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.