Note, it installs and builds fine on ARM since some time after v4.5.3, it's just that this manual check prevents it from actually running – would it make sense to remove these manual checks entirely, or only display any platform related errors if loading the binding fails?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I'm curious where you for these values from? The installer gets these values from process.arch. According the documentation it return either arm or arm64.
@xzyfer all three are different architectures. arm64 is sometimes labeled "v8", although I've never seen "armv8" as an architecture as included in this PR. aarch64 is indeed the same thing as arm64. As far as I can tell, "arm" by itself is not a thing. I don't know if there is a reason the armv6l architecture was left out of this PR?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
We use the value of process.arch to determine which binary to download for the user. As stated in my previous comment the only official downloads I see the following arm variations.
arm64
armv6l
armv7l
We can only support the value returned by process.arch (on each of those downloads). I am unable to confirm those values since I don't have any arm devices to test on.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
However I only found this PR because of the following error I got while trying to install node-sass:
$ npm i --save-dev node-sass
> node-sass@4.8.3 install /home/jess/dev/first.site/node_modules/node-sass
> node scripts/install.js
Downloading binary from https://github.com/sass/node-sass/releases/download/v4.8.3/linux-arm64-59_binding.node
Cannot download "https://github.com/sass/node-sass/releases/download/v4.8.3/linux-arm64-59_binding.node":
HTTP error 404 Not Found
It's expecting an "arm64" at that location, and it's not finding it. I'm thinking I'll try to just install the Github version, although I haven't figured that out yet.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
It's expecting an "arm64" at that location, and it's not finding it. I'm
thinking I'll try to just install the Github version, although I haven't
figured that out yet.
What can I do to help? My current chromebook is arm64, although I think I have a armv7l in a box in a closet somewhere.
Alternatively, the package could just fall back to attempting to build itself on the current installation machine. I guess that would be hard to test though.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Honestly this issue is a dead lock until either
- we can have access to arm hardware
- i.e. arm based CI, or physical hardware
- we onboard a community member who is available to
- build the release binaries, and
- ensure changes don't break arm compatibility
We are able to support linux, windows, osx, and alpine because we can either automate test and binary generation, or we have team members who take on that responsibility.
Related, in version 5 we will be relaxing the installation process to automatically fallback to a local compilation if a pre-built binary is not available for download.
This will at least lower the barrier to running on unsupported architectures. This comes at the cost of guaranteeing future releases will continue to work on those architectures.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Originally posted by: jhermsmeier
Note, it installs and builds fine on ARM since some time after v4.5.3, it's just that this manual check prevents it from actually running – would it make sense to remove these manual checks entirely, or only display any platform related errors if loading the binding fails?
Originally posted by: nschonni
@jhermsmeier we will likely remove those checks in 5, and just rely on the
node-pre-gyp
syntax for people wanting different combos [#2111]Related
Tickets: #2111
Originally posted by: xzyfer
I'm curious where you for these values from? The installer gets these values from
process.arch
. According the documentation it return eitherarm
orarm64
.https://nodejs.org/api/process.html#process_process_arch
Originally posted by: xzyfer
Looking at the official downloads I see the following arm variations.
It's not clear to me if/how these map to just
arm
andarm64
.Originally posted by: jessaustin
@xzyfer all three are different architectures.
arm64
is sometimes labeled "v8", although I've never seen "armv8" as an architecture as included in this PR.aarch64
is indeed the same thing asarm64
. As far as I can tell, "arm" by itself is not a thing. I don't know if there is a reason thearmv6l
architecture was left out of this PR?Originally posted by: xzyfer
We use the value of
process.arch
to determine which binary to download for the user. As stated in my previous comment the only official downloads I see the following arm variations.We can only support the value returned by
process.arch
(on each of those downloads). I am unable to confirm those values since I don't have any arm devices to test on.Originally posted by: jessaustin
What you describe should be good enough:
$ uname -m -p -i aarch64 aarch64 aarch64 $ node > process.arch 'arm64'
However I only found this PR because of the following error I got while trying to install
node-sass
:It's expecting an "arm64" at that location, and it's not finding it. I'm thinking I'll try to just install the Github version, although I haven't figured that out yet.
Originally posted by: xzyfer
The reason it can't be found is that we don't build those binaries yet
which is what this issue is trying to resolve.
We don't supply the arm binaries largely because no-one in the team has
access to arm hardware.
On Wed., 18 Apr. 2018, 10:48 am jessaustin, notifications@github.com
wrote:
Originally posted by: jessaustin
What can I do to help? My current chromebook is
arm64
, although I think I have aarmv7l
in a box in a closet somewhere.Alternatively, the package could just fall back to attempting to build itself on the current installation machine. I guess that would be hard to test though.
Originally posted by: xzyfer
Honestly this issue is a dead lock until either
- we can have access to arm hardware
- i.e. arm based CI, or physical hardware
- we onboard a community member who is available to
- build the release binaries, and
- ensure changes don't break arm compatibility
We are able to support linux, windows, osx, and alpine because we can either automate test and binary generation, or we have team members who take on that responsibility.
Related, in version 5 we will be relaxing the installation process to automatically fallback to a local compilation if a pre-built binary is not available for download.
This will at least lower the barrier to running on unsupported architectures. This comes at the cost of guaranteeing future releases will continue to work on those architectures.
Originally posted by: jessaustin
Have the relevant v5 patches hit yet?
Originally posted by: xzyfer
No. You can subscribe to https://github.com/sass/node-sass/pull/2312 for updates.
Originally posted by: jessaustin
OK thanks I will.
Originally posted by: jhermsmeier
@xzyfer I'd be happy to donate a RPi, if that'd help