Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

prebuilt for ARM devices... [$65] #1151

Open
bmatusiak opened this issue Sep 26, 2013 · 172 comments
Open

prebuilt for ARM devices... [$65] #1151

bmatusiak opened this issue Sep 26, 2013 · 172 comments
Labels
bounty Electron Parity Adding a feature to NW.js that already or previously existed in Electron feature-request

Comments

@bmatusiak
Copy link

there are 2 common arm build as i can see

one is armel and the other is armhf

it would be cool if there was a ARM prebuilt binary

If there are others who would like to see ARM prebuilt binaries add a +1 to this issue and hopefully maintainer will deliver

There is a $65 open bounty on this issue. Add to the bounty at Bountysource.

@katanacrimson
Copy link

Related: #193, #437.

@davidbenhaim
Copy link

+1

@timonsku
Copy link

+1
Would be great for digital signage.

@dtauschke
Copy link

+1

3 similar comments
@pvoisin
Copy link

pvoisin commented Jan 28, 2014

+1

@cranic
Copy link

cranic commented Feb 3, 2014

+1

@richardanaya
Copy link

+1

@richardanaya
Copy link

Does anyone know the current steps to doing this?

@gumyn
Copy link

gumyn commented Mar 17, 2014

Yeah something to "dd" on the ssd card ;) and paf node-webkit on rpi

Awesome ^^

@milanvanschaik
Copy link

Would be really nice! Want to run it on a Raspberry Pi (in fullscreen :-)).

@cranic
Copy link

cranic commented Mar 21, 2014

@milanvanschaik but you can do this with chromium-browser in kiosk mode :-)

@bmatusiak
Copy link
Author

@cranic, "chromium-browser" does not support nodejs plugins/modules automatically

@silkycove
Copy link

+1

@jtenner
Copy link

jtenner commented Apr 10, 2014

Workaround so far is chromium-browser with browserified packages (browser specific shims.) This is undesirable of course. Anyone who needs a solution now might benefit from this though.

@milanvanschaik
Copy link

What about this? Seems like possible but we simply need a 'prebuild' version?
#193 (comment)

@silkycove
Copy link

I was misunderstanding. I simply thought that I can do npm node-webkit on Raspberry Pi when the binary is available. During trying to build node-webkit with latest deps packages, I learnt that it was not easy to maintain multiple arm binaries. I will withdraw my +1 now. -1 ;-)
Note: Actualy, I could not build webkit on Raspberry pi (w/DISTCC) with latest deps. The build is terminated by VFP related error on merging V8. I do not know it is the cause but I found "Removed ARM support for VFP2." on V8 3.18.0 release note.

@xingped
Copy link

xingped commented May 27, 2014

+1. None of the instructional gists for compiling my own version seem to work. I'm dying for a prebuilt binary for arm.

@ndhunju
Copy link

ndhunju commented Jul 9, 2014

+1

1 similar comment
@qrpike
Copy link

qrpike commented Jul 21, 2014

+1

@jaredallard
Copy link

+2

On Mon, Jul 21, 2014 at 1:48 PM, Quinton Pike notifications@github.com
wrote:

+1


Reply to this email directly or view it on GitHub
#1151 (comment)
.

@smolleyes
Copy link

+1

1 similar comment
@raykamp
Copy link

raykamp commented Aug 6, 2014

+1

@bmatusiak
Copy link
Author

We are at 14 votes, so please vote!

@Dbuggerx
Copy link

+1

3 similar comments
@nicu
Copy link

nicu commented Aug 20, 2014

+1

@paul-piro
Copy link

+1

@alexjstubbs
Copy link

+1

@gumyn
Copy link

gumyn commented Aug 21, 2014

+5

@chrisJohn404
Copy link

+1

@Gutem
Copy link

Gutem commented Sep 17, 2018

@doej1367
Copy link

doej1367 commented Oct 12, 2018

there are 2 common arm build as i can see

one is armel and the other is armhf

it would be cool if there was a ARM prebuilt binary

If there are others who would like to see ARM prebuilt binaries add a +1 to this issue and hopefully maintainer will deliver

There is a $65 open bounty on this issue. Add to the bounty at Bountysource.

I hope this includes ARMv6 or in other words the Raspberry Pi Zero.

@IssueHuntBot
Copy link

@0maxxam0 funded this issue with $12. See it on IssueHunt

@IssueHuntBot
Copy link

@rororofff has funded $2.00 to this issue.


@hthetiot
Copy link

I'm looking into providing 0.39.2 on arm and pursuing work started here.
I will reply here if I succeed.

@llamasoft
Copy link
Contributor

Good news! There's no technical reason why NW.js can't be built for ARM devices. In fact, Chromium has supported ARM builds for a while now. Heck, Chromium OS runs on ARM devices.

Building NW.js only required one tweak and one extra install step, but the build was successful and I ended up with ARM binaries. To make things easier, I took notes during the process and put together the following script for building the ARM binaries from an Ubuntu machine: https://gist.github.com/llamasoft/33af03b73945a84d7624460d67b922ab

The two modifications required were:

  1. Running build/linux/sysroot_scripts/install-sysroot.py --arch=arm to install the ARM sysroot files.
  2. Modifying third_party/node-nw/common.gypi to point to the ARM sysroot files. (PR Update common.gypi to allow for ARM builds node#38)

Aside from that, you just have to set the correct build flags and wait a few hours for the build to complete.

@llamasoft
Copy link
Contributor

Good news! The full build was successful, including the packaging:

root@nwjs-builder:~/nwjs/src# ls -alh out/nw/dist/
total 205M
drwxr-xr-x  2 root root 4.0K Feb 18 00:28 .
drwx------ 22 root root 4.0K Feb 18 00:27 ..
-rw-r--r--  1 root root   90 Feb 18 00:28 SHASUMS256.txt
-rw-r--r--  1 root root  20M Feb 18 00:28 nw-headers-v0.44.2.tar.gz
-rw-r--r--  1 root root  77M Feb 18 00:28 nwjs-sdk-symbol-v0.44.2-linux-arm.tar.gz
-rw-r--r--  1 root root 109M Feb 18 00:27 nwjs-sdk-v0.44.2-linux-arm.tar.gz

I've updated my build script gist to reflect the steps and arguments required to create the ARM/Linux build. The script currently requires two manual changes (PR 38 and PR 7382) and includes a hacky workaround for one upstream issue.

I still need to test the resulting files on my Raspberry Pi, but I'm cautiously optimistic. Once NW.js offers pre-built packages for ARM devices, it will unblock a major nw-builder issue which should bring a whole plethora of NW.js apps to ARM devices!

@LeonardLaszlo
Copy link

@llamasoft Thanks for your effort!

@exander77
Copy link

This is great, I can drop running applications in Chrome and rewrite it to nwjs!

@jalbam
Copy link

jalbam commented Feb 22, 2020

Is that for ARMv7 only or also for ARMv6?

@llamasoft
Copy link
Contributor

llamasoft commented Feb 22, 2020

@jalbam These changes primarily target ARMv7 (because that's what Chromium and LLVM considers the "arm" target architecture). That said, you should be able to modify the build files to set -march flags to compile to ARMv6.

@jonwwilkes
Copy link

jonwwilkes commented Feb 24, 2020

@llamasoft Can confirm, your build script works!

It would be great if you could get Roger to update the build instructions so that something like your script is linked. I'd guess that most devs would rather run a single script and get a coffee than manually read about and type out every build instruction.

Also-- do you know if there's any point to trying an aarch64 build? The arm build seems to run fine on my aarch64 laptop-- not sure if there are any obvious benefits to compiling for the aarch64 instruction set.

@bmatusiak
Copy link
Author

@llamasoft the script fails on Pi-4b - buster image

@llamasoft
Copy link
Contributor

@bmatusiak I imagine it would fail. The system requirements for building Chrome is something like 100GB of storage and at least 8GB of RAM. The script builds binaries for ARM but the build itself doesn't need to take place on an ARM device. You're better off building the files on a more powerful machine and copying the results over.

@bmatusiak
Copy link
Author

i year ya.. i have it setup on POE with NFS,, only limit i have is ram ;)

@LeonardLaszlo
Copy link

Probably 8GB of ram are not enough for the linking process. I use 16 and I cross-compile. Soon I'll release all flavours of v0.44.x

@fredericbirke
Copy link

@LeonardLaszlo I checked your uploaded v0.44.x arm builds and they are working flawlessly so far on a Raspberry Pi 4B with Debian Buster. Thank you for your work!

@LeonardLaszlo
Copy link

I am glad I could help.

@TheJaredWilcurt TheJaredWilcurt added the Electron Parity Adding a feature to NW.js that already or previously existed in Electron label Aug 30, 2020
@toxygen
Copy link

toxygen commented Oct 15, 2022

@bmatusiak I imagine it would fail. The system requirements for building Chrome is something like 100GB of storage and at least 8GB of RAM. The script builds binaries for ARM but the build itself doesn't need to take place on an ARM device. You're better off building the files on a more powerful machine and copying the results over.

You can always add swap if you are running out of memory. If the storage is slow (e.g. sdcard) you can add swap on NFS mounted storage. I did that when I was compiling node-webkit on Odroid X2. I had to recompile the kernel so I could enable swap on nfs, but it was not a problem.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bounty Electron Parity Adding a feature to NW.js that already or previously existed in Electron feature-request
Projects
None yet
Development

No branches or pull requests